Class.isAssignableFrom與instanceof的區別


isAssignableFrom

假設有兩個類Class1和Class2。 Class1.isAssignableFrom(Class2)表示:

  1. 類Class1和Class2是否相同。
  2. Class1是否是Class2的父類或接口
    調用者和參數都是java.lang.Class類型。

instanceof

用來判斷一個對象是否是一個類及其子類或接口及其子接口的的實例。
格式:object instanceof TypeName
第一個參數是對象實例名,第二個參數是具體的類名或接口名

舉例

public class TestCase {  
    public static void main(String[] args) {  
        TestCase test = new TestCase();  
        test.testIsAssignedFrom1();  
        test.testIsAssignedFrom2();  
        test.testIsAssignedFrom3();  
        test.testInstanceOf1();  
        test.testInstanceOf2();  
    }  
  
    public void testIsAssignedFrom1() {  
        System.out.println(String.class.isAssignableFrom(Object.class));  
    }  
  
    public void testIsAssignedFrom2() {  
        System.out.println(Object.class.isAssignableFrom(Object.class));  
    }  
  
    public void testIsAssignedFrom3() {  
        System.out.println(Object.class.isAssignableFrom(String.class));  
    }  
  
    public void testInstanceOf1() {  
        String ss = "";  
        System.out.println(ss instanceof Object);  
    }  
  
    public void testInstanceOf2() {  
        Object o = new Object();  
        System.out.println(o instanceof Object);  
    }  
  
}  

打印結果:

false  
true  
true  
true  
true  

參考連接:
https://lucky16.iteye.com/blog/1631253


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。