關于java的instanceof關鍵字
有人說instanceof這個java關鍵字沒必要存在了,不過本人在實際項目中真正的應用過;
instanceof是java的二元操作符,是判斷關鍵字左邊對象是否是右邊類的實例,然后返回一個布爾類型的結(jié)果;先看如下例子:
看這段代碼,如果還不了解instanceof這個關鍵字也能猜出應該打印出“Integer is
Object!”;那instanceof是如何判斷的呢;
現(xiàn)在思考一下多態(tài)的概念,一個事物或?qū)嵗卸喾N形態(tài),顯然一個Integer的實例同時也可以成為它是Object類型的,所以value是Object沒錯;那我們再來看看接口是不是也一樣可以這樣用呢:
現(xiàn)在定義了一個List接口對象,應用向上轉(zhuǎn)型指向的ArrayList的實例;然后看list是否是java.util.Collection呢,我們知道Collection是線性集合的父接口,所以結(jié)果應該是“List is Collection!”;
綜上,無論類還是接口都可以用instanceof這個關鍵字來判斷,其實是不是也可以把這個關鍵字理解為多態(tài)的一個應用呢?
instanceof是java的二元操作符,是判斷關鍵字左邊對象是否是右邊類的實例,然后返回一個布爾類型的結(jié)果;先看如下例子:
public static void main(String[] args) {
if(value instanceof Object){
Object!");
Object!");
}
Object!”;那instanceof是如何判斷的呢;
現(xiàn)在思考一下多態(tài)的概念,一個事物或?qū)嵗卸喾N形態(tài),顯然一個Integer的實例同時也可以成為它是Object類型的,所以value是Object沒錯;那我們再來看看接口是不是也一樣可以這樣用呢:
public static void main(String[] args) {
java.util.Collection){
Collection!");
}else{
System.out.println("List is not Collection!");
現(xiàn)在定義了一個List接口對象,應用向上轉(zhuǎn)型指向的ArrayList的實例;然后看list是否是java.util.Collection呢,我們知道Collection是線性集合的父接口,所以結(jié)果應該是“List is Collection!”;
綜上,無論類還是接口都可以用instanceof這個關鍵字來判斷,其實是不是也可以把這個關鍵字理解為多態(tài)的一個應用呢?