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