1. 程式人生 > >Class.isAssignableFrom與instanceof的區別

Class.isAssignableFrom與instanceof的區別

code stat class類 testin ref 參數 iteye type 打印

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

Class.isAssignableFrom與instanceof的區別