日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Class.isAssignableFrom(Class clz)与instanceof与Class.isInstance(Object obj) 的区别和联系

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Class.isAssignableFrom(Class clz)与instanceof与Class.isInstance(Object obj) 的区别和联系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編程的時候可能會遇到一個不知道它屬于哪個類的對象,我們可以用下列運算符或者方法來判斷。

?1、instanceof

instanceof是運算符只被用于對象引用變量,檢查左邊的被測試對象是不是右邊類或接口的實例化。如果被測對象是null值,則測試結果總是false。 String str = new String("測試"); System.out.println(str instanceof String); //輸出true。

2、 isInstance(Object obj)

?isInstance(Object obj)方法,這個方法與instanceof等價,其中obj是被測試的對象,如果obj是調用這個方法的class或接口的實例,則返回true。 String str = new String("測試"); System.out.println(String.class.isInstance(str)); //輸出true。

3、isAssignableFrom

isAssignableFrom(Class cls)方法,如果調用這個方法的class或接口與參數cls表示的類或接口相同,或者是參數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) ?
? 調用者和參數都是java.lang.Class類型。???
? 而instanceof是用來判斷一個對象實例是否是一個類或接口的或其子類子接口的實例。??
??格式是:o?instanceof?TypeName?????
??第一個參數是對象實例名,第二個參數是具體的類名或接口名,例如 ? String,InputStream。

Java代碼 ?
  • package?com.bill99.pattern;??
  • ??
  • public?class?AssignableTest?{??
  • ??????
  • ????public?AssignableTest(String?name)?{??
  • ????}??
  • ????/**?
  • ?????*?判斷一個類是否是另一個類的父類?
  • ?????*?是打印true?
  • ?????*?否打印false?
  • ?????*/??
  • ????public?static?void?testIsAssignedFrom1()?{??
  • ????????System.out.println("String是Object的父類:"+String.class.isAssignableFrom(Object.class));??
  • ????}??
  • ????/**?
  • ?????*?判斷一個類是否是另一個類的父類?
  • ?????*?是打印true?
  • ?????*?否打印false?
  • ?????*/??
  • ????public?static?void?testIsAssignedFrom2()?{??
  • ????????System.out.println("Object是String的父類:"+Object.class.isAssignableFrom(String.class));??
  • ????}??
  • ????/**?
  • ?????*?判斷一個類是否和另一個類相同?
  • ?????*?是打印true?
  • ?????*?否打印false?
  • ?????*/??
  • ????public?static?void?testIsAssignedFrom3()?{??
  • ????????System.out.println("Object和Object相同:"+Object.class.isAssignableFrom(Object.class));??
  • ????}??
  • ??
  • ????/**?
  • ?????*?判斷str是否是Object類的實例?
  • ?????*?是打印true?
  • ?????*?否打印false?
  • ?????*/??
  • ????public?static?void?testInstanceOf1()?{??
  • ????????String?str?=?new?String();??
  • ????????System.out.print("str是Object的實例:");??
  • ????????System.out.println(str?instanceof?Object);??
  • ????}??
  • ????/**?
  • ?????*?判斷o是否是Object類的實例?
  • ?????*?是打印true?
  • ?????*?否打印false?
  • ?????*/??
  • ????public?static?void?testInstanceOf2()?{??
  • ????????Object?o?=?new?Object();??
  • ????????System.out.print("o是Object的實例:");??
  • ????????System.out.println(o?instanceof?Object);??
  • ????}??
  • ??????
  • ????public?static?void?main(String[]?args)?{??
  • ????????testIsAssignedFrom1();??
  • ????????testIsAssignedFrom2();??
  • ????????testIsAssignedFrom3();??
  • ????????testInstanceOf1();??
  • ????????testInstanceOf2();??
  • ????}??
  • }??
  • ?結果:

    String是Object的父類:false
    Object是String的父類:true
    Object和Object相同:true
    str是Object的實例:true
    o是Object的實例:true

    ?

    ?

    轉載于:https://www.cnblogs.com/langtianya/p/5025225.html

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的Class.isAssignableFrom(Class clz)与instanceof与Class.isInstance(Object obj) 的区别和联系的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。