Class.isAssignableFrom與instanceof的區別
阿新 • • 發佈:2019-01-30
code stat class類 testin ref 參數 iteye type 打印
isAssignableFrom
假設有兩個類Class1和Class2。Class1.isAssignableFrom(Class2)
表示:
- 類Class1和Class2是否相同。
- 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的區別