Java中instanceof 關(guān)鍵字的使用
instanceof 通過返回一個布爾值來指出,某個對象是否是某個特定類或者是該特定類的子類的一個實例。
如果 object 是class 的一個實例,則 instanceof 運算符返回 true,如果 object 不是指定類的一個實例,或者object 是null, 則返回false。class 可以是類,可以是接口。
instanceof 在Java 的編譯狀態(tài) 和 運行狀態(tài)是有區(qū)別的:
- 在編譯狀態(tài)中,class(指的是對象的引用)可以是object對象、父類,自身類,子類。在這三種情況下Java編譯時不會報錯。
- 在運行狀態(tài)中,class 可以是 object 對象,父類,自身類,不能其他是子類。在前面三種情況下 result 的結(jié)果為 true,最后一種為false。但是class為子類時編譯不會報錯。運行結(jié)果為false.(大致就是判斷表達(dá)式:class 變量=(class)object的引用 是否立)。
示例代碼:
AnimalParent.java
package com.api.Demo06;
public class AnimalParent {
//public interface AnimalParent { //也可以時接口
}Cat.java
package com.api.Demo06;
public class Cat extends AnimalParent{
//public class Cat implements AnimalParent{
}Dog.java
package com.api.Demo06;
public class Dog extends AnimalParent{
//public class Dog implements AnimalParent{
}Test.java
package com.api.Demo06;
public class Test01 {
public static void main(String[] args) {
//多態(tài)技術(shù)
AnimalParent cat = new Cat();
// 類型轉(zhuǎn)換異常
// Dog dog = (Dog) cat; //com.api.Demo06.Cat cannot be cast to com.api.Demo06.Dog
// if(對象的引用 instanceof 具體的類型(類或接口))
if (cat instanceof Dog) { //返回 布爾類型 是該類型 返回true,不是則返回false
System.out.println("cat 是 Dog 類型");
} else {
System.out.println("cat 不是 Dog 類型");
}
/**
* cat instanceof Dog 不是
* cat instanceof Cat||AnimalParent||Object 是
* 在編譯狀態(tài)中,class(對象的引用)可以是object對象的父類(AnimalParent),自身類(Cat),子類。
* 在這三種情況下Java編譯時不會報錯。
*/
// 強轉(zhuǎn)時 程序可能會直接 拋出異常,所以可以使用 instanceof 判斷一下
if (cat instanceof Dog) {
Dog dog = (Dog) cat;
System.out.println("類型符合,可以強轉(zhuǎn)");
} else {
System.out.println("類型不符,不能強轉(zhuǎn)");
}
}
/**
* 在運行狀態(tài)中,class 可以是 object 對象的父類(AnimalParent),自身類(Cat),不能是其他的子類(Dog、)。
* 在前面兩種情況下 result 的結(jié)果為 true,最后一種為false。
*/
}到此這篇關(guān)于Java中instanceof 關(guān)鍵字的使用的文章就介紹到這了,更多相關(guān)Java instanceof 關(guān)鍵字內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java中instanceOf關(guān)鍵字的用法及特性詳解
- Java深入講解instanceof關(guān)鍵字的使用
- Java中instanceof關(guān)鍵字實例講解
- Java關(guān)鍵字之instanceof詳解
- Java instanceof關(guān)鍵字用法詳解及注意事項
- java中instanceof 關(guān)鍵字作用和實際用途詳解
- Java關(guān)鍵字instanceof用法及實現(xiàn)策略
- Java關(guān)鍵字instanceof的兩種用法實例
- Java instanceof關(guān)鍵字的的進(jìn)一步理解
- Java中instanceof關(guān)鍵字的用法總結(jié)
相關(guān)文章
Java使用Lettuce客戶端在Redis在主從復(fù)制模式下命令執(zhí)行的操作
這篇文章主要介紹了Java使用Lettuce客戶端在Redis在主從復(fù)制模式下命令執(zhí)行的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
Java實現(xiàn)按權(quán)重隨機(jī)數(shù)
這篇文章主要介紹了Java實現(xiàn)按權(quán)重隨機(jī)數(shù),本文給出了提出問題、分析問題、解決問題三個步驟,需要的朋友可以參考下2015-04-04
解決springboot configuration processor對maven子模塊不起作用的問題
這篇文章主要介紹了解決springboot configuration processor對maven子模塊不起作用的問題,本文通過圖文實例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09
Intellij?IDEA?中調(diào)試?maven?插件的步驟
這篇文章主要介紹了Intellij?IDEA?中調(diào)試?maven?插件,本文分步驟給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
基于<aop:aspect>與<aop:advisor>的區(qū)別
這篇文章主要介紹了<aop:aspect>與<aop:advisor>的區(qū)別,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11

