Java instanceof關(guān)鍵字用法詳解及注意事項(xiàng)
instanceof 嚴(yán)格來說是Java中的一個雙目運(yùn)算符,用來測試一個對象是否為一個類的實(shí)例,用法為:
boolean result = obj instanceof Class
其中 obj 為一個對象,Class 表示一個類或者一個接口,當(dāng) obj 為 Class 的對象,或者是其直接或間接子類,或者是其接口的實(shí)現(xiàn)類,結(jié)果result 都返回 true,否則返回false。
注意:編譯器會檢查 obj 是否能轉(zhuǎn)換成右邊的class類型,如果不能轉(zhuǎn)換則直接報錯,如果不能確定類型,則通過編譯,具體看運(yùn)行時定。
instanceof
instanceof是Java的一個保留關(guān)鍵字,左邊是對象,右邊是類,返回類型是Boolean類型。它的具體作用是測試左邊的對象是否是右邊類或者該類的子類創(chuàng)建的實(shí)例對象,是,則返回true,否則返回false。
instanceof使用注意事項(xiàng)
- 先有繼承關(guān)系,再有instanceof的使用。
- 當(dāng)該測試對象創(chuàng)建時右邊的聲明類型和左邊的類其中的任意一個跟測試類必須得是繼承樹的同一分支或存在繼承關(guān)系,否則編譯器會報錯。
instanceof使用示例
public class Application { public static void main(String[] args) { // Object > Person > teacher // Object > Person > Student // Object > String Object o = new Student(); // 主要看這個對象是什么類型與實(shí)例化的類名 // instanceof關(guān)鍵字可以判斷左邊對象是否是右邊類或者子類的一個實(shí)例 System.out.println(o instanceof Student); // o 是Student類的一個實(shí)例對象 所以判斷右邊類跟student有無關(guān)系 以及顯示聲明有無關(guān)系 System.out.println(o instanceof Person); // true System.out.println(o instanceof Object); // true System.out.println(o instanceof String); // false System.out.println(o instanceof Teacher); // 無關(guān)系 System.out.println("========================"); Person person = new Student(); System.out.println(person instanceof Person); // true System.out.println(person instanceof Object); // true // System.out.println(person instanceof String); // 編譯錯誤 System.out.println(person instanceof Teacher); // 無關(guān)系 } }
instanceof 應(yīng)用場景
需要用到對象的強(qiáng)制類型轉(zhuǎn)換時,需要使用instanceof進(jìn)行判斷。
到此這篇關(guān)于Java instanceof關(guān)鍵字用法詳解及注意事項(xiàng)的文章就介紹到這了,更多相關(guān)Java instanceof用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ssm整合之Spring整合MyBatis框架配置事務(wù)的詳細(xì)教程
這篇文章主要介紹了ssm整合之Spring整合MyBatis框架配置事務(wù),本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10SpringBoot整合RestTemplate用法的實(shí)現(xiàn)
本篇主要介紹了RestTemplate中的GET,POST,PUT,DELETE、文件上傳和文件下載6大常用的功能,具有一定的參考價值,感興趣的可以了解一下2023-08-08解析Orika的MapperFacade 屬性賦值的使用問題
在我們實(shí)際開發(fā)中,常常會有對象與對象之間的轉(zhuǎn)化,或者把一個對象的數(shù)據(jù)轉(zhuǎn)化到另一個數(shù)據(jù)之中,如果我們手動的一個一個的set就會比較麻煩,代碼段看起來也會比較長。而Orika的MapperFacade就是解決這個問題的,實(shí)現(xiàn)對象屬性的復(fù)制2021-12-12SpringBoot @Validated注解實(shí)現(xiàn)參數(shù)分組校驗(yàn)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于SpringBoot @Validated注解實(shí)現(xiàn)參數(shù)分組校驗(yàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09spring boot整合scurity做簡單的登錄校驗(yàn)的實(shí)現(xiàn)
這篇文章主要介紹了spring boot整合scurity做簡單的登錄校驗(yàn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04