Java對(duì)象類型的判斷詳解
instanceof
判斷某個(gè)對(duì)象是否是某個(gè)類的實(shí)例或者某個(gè)類的子類的實(shí)例。它的判斷方式大概是這樣的:
public<T> boolean function(Object obj, Class<T> calzz) { if (obj == null) { return false; } try { T t = (T) obj; return true; } catch (ClassCastException e) { return false; } }
Class.equals()
這種方式比較的類型,一定是本身才返回true,子類或者父類都返回false;
// B是A的子類,C是B的子類 B b = new B(); // false System.out.println(b.getClass().equals(A.class)); // true System.out.println(b.getClass().equals(B.class)); // false System.out.println(b.getClass().equals(C.class));
PS:b.getClass().equals(A.class)等同于b.getClass() == A.class
Class.isInstance()
這個(gè)方法跟instanceof完全等價(jià)。
// B是A的子類,C是B的子類 B b = new B(); // true System.out.println(A.class.isInstance(b)); // true System.out.println(B.class.isInstance(b)); // false System.out.println(C.class.isInstance(b));
Class.isAssignableFrom
判斷某個(gè)類是否是另一個(gè)類和其子類。
// B是A的子類,C是B的子類 // false System.out.println(B.class.isAssignableFrom(A.class)); // true System.out.println(B.class.isAssignableFrom(B.class)); // true System.out.println(B.class.isAssignableFrom(C.class));
以上所述是小編給大家介紹的Java對(duì)象類型的判斷詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Kafka消費(fèi)客戶端協(xié)調(diào)器GroupCoordinator詳解
這篇文章主要為大家介紹了Kafka消費(fèi)客戶端協(xié)調(diào)器GroupCoordinator使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Springboot創(chuàng)建子父工程過(guò)程圖解
這篇文章主要介紹了Springboot創(chuàng)建子父工程過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Jackson將json string轉(zhuǎn)為Object,org.json讀取json數(shù)組的實(shí)例
下面小編就為大家?guī)?lái)一篇Jackson將json string轉(zhuǎn)為Object,org.json讀取json數(shù)組的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助2017-12-12MyBatis Mapper.xml入?yún)ist使用in函數(shù)問(wèn)題
文章主要講述了在使用MyBatis的Mapper.xml文件時(shí),如何正確地在in函數(shù)中使用List作為入?yún)?作者強(qiáng)調(diào)了完整拷貝<if>...</if>格式的重要性,并指出稍微的改動(dòng)就會(huì)導(dǎo)致錯(cuò)誤2025-02-02關(guān)于Java創(chuàng)建線程的2種方式以及對(duì)比
這篇文章主要給大家介紹了關(guān)于Java創(chuàng)建線程的2種方式以及對(duì)比的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot使用jasypt加解密密碼的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10springboot定時(shí)任務(wù)SchedulingConfigurer異步多線程實(shí)現(xiàn)方式
這篇文章主要介紹了springboot定時(shí)任務(wù)SchedulingConfigurer異步多線程實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04