Class.isAssignableFrom與instanceof的區別

王凱華發表於2019-01-30

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

相關文章