Class.isAssignableFrom(Class clz)与instanceof与Class.isInstance(Object obj) 的区别和联系
編程的時候可能會遇到一個不知道它屬于哪個類的對象,我們可以用下列運算符或者方法來判斷。
?1、instanceof
instanceof是運算符只被用于對象引用變量,檢查左邊的被測試對象是不是右邊類或接口的實例化。如果被測對象是null值,則測試結(jié)果總是false。 String str = new String("測試"); System.out.println(str instanceof String); //輸出true。
2、 isInstance(Object obj)
?isInstance(Object obj)方法,這個方法與instanceof等價,其中obj是被測試的對象,如果obj是調(diào)用這個方法的class或接口的實例,則返回true。 String str = new String("測試"); System.out.println(String.class.isInstance(str)); //輸出true。
3、isAssignableFrom
isAssignableFrom(Class cls)方法,如果調(diào)用這個方法的class或接口與參數(shù)cls表示的類或接口相同,或者是參數(shù)cls表示的類或接口的父類,則返回true。 System.out.println(String.class.isAssignableFrom(Object.class)); System.out.println(Object.class.isAssignableFrom(String.class)); //其中第一個輸出false,第二個輸出true。
?
4、附件:
Class.isAssignableFrom()是用來判斷一個類Class1和另一個類Class2是否相同或是另一個類的子類或接口。??
格式為:
??????? Class1.isAssignableFrom(Class2) ?
? 調(diào)用者和參數(shù)都是java.lang.Class類型。???
? 而instanceof是用來判斷一個對象實例是否是一個類或接口的或其子類子接口的實例。??
??格式是:o?instanceof?TypeName?????
??第一個參數(shù)是對象實例名,第二個參數(shù)是具體的類名或接口名,例如 ? String,InputStream。
?結(jié)果:
String是Object的父類:false
Object是String的父類:true
Object和Object相同:true
str是Object的實例:true
o是Object的實例:true
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/langtianya/p/5025225.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Class.isAssignableFrom(Class clz)与instanceof与Class.isInstance(Object obj) 的区别和联系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS开发 Block的用法
- 下一篇: PAT 1005