instance of 泛型
java的instanceof自己的一點總結
www.diybl.com??? 時間 : 2009-08-22? 作者:匿名?? 編輯:小張 點擊:? 1060 [ 評論 ]
-
-
A? instanceof B;
A必需是具體實例,B是一種類(或接口)。
B不能是確定泛型參數的泛型。
如果A在編譯時能過確定具體類型,那么a必須是可以通過(B)a轉換成B類型的,不然編譯器會報錯。
如果A不能轉換為B,則可以(Object)a instanceof B。
如果A實在運行時得到的,那么沒有如此限定。
具體例子時在論壇上得到的:
package instan;
import java.util.List;
public class Test {
??? public static void main(String[] args) {
??????? //編譯時無法確定getObject()返回的引用類型的具體類型,下面兩句都能通過編譯
??????? System.out.println(getObject() instanceof Object);
??????? System.out.println(getObject() instanceof String);
??????? System.out.println(getObject() instanceof Test);
??????? //編譯時可以確定類型的,能夠cast則編譯通過,否則編譯失敗
??????? Test test = new Test();
??????? System.out.println(test instanceof Test);//ok
??????? System.out.println(test instanceof Object); //ok
??????? // System.out.println(test instanceof String);//error,可以通過下面方法
??????? System.out.println((Object)test instanceof String);
???????
??????? //跟泛型相關的注意一下
??????? //List是泛型類型,如果不指定泛型參數,成功編譯
??????? System.out.println(test instanceof List);
??????? //如果不限定類型界限,通過編譯
??????? System.out.println(test instanceof List<?>);
??????? //指定泛型參數,編譯時可確定類型,如果不能cast,編譯不通過
//?????? System.out.println(getObject() instanceof List<Test>); //error
//?????? System.out.println(test instanceof List<Test>);//error
??? }
??? public static Object getObject() {
??????? return new Test();
??? }
}
文章出處:飛諾網(www.diybl.com):http://www.diybl.com/course/3_program/java/javajs/20090822/169641.html
總結
以上是生活随笔為你收集整理的instance of 泛型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle格式化数字和日期的方法
- 下一篇: Linux操作系统下三种配置环境变量的方