[英]Java Pass instance type of Object to generic class type parameter
是否可以將Objects實例類型作為泛型的類型參數傳遞? 類似於以下內容:
Object obj = new Double(3.14); //Instance type Double
//Could I do the following?
Item<obj.getInstanceType()> item = new Item<obj.getInstanceType()>(obj);
public class Item<T> {
private T item;
public Item(T item) {
this.item = item
}
public T getItem() {
return this.item;
}
}
編號。泛型類型應在編譯時知道。
泛型在那里可以在編譯時本身捕獲可能的運行時異常。
List<Integer> list = new ArrayList<Integer>();
//..some code
String s = list.get(0); // this generates compilation error
因為編譯器知道list
僅用於存儲Integer
對象,並且將從list獲得的值分配給String
絕對是錯誤的。 如果泛型類型是在運行時確定的,那將是困難的。
Java中存在泛型的原因是,以便在編譯時可以捕獲更多錯誤。 因此,需要在編譯時強烈定義類型,否則它們將無用。
這是一個關於泛型的非常好的學習經驗: http : //docs.oracle.com/javase/tutorial/java/generics/
泛型是在編譯時解析的,因此將無法正常工作(編譯器將需要執行該代碼才能知道結果,並且顯然不可能,因為它仍在編譯:P)。
你在做什么的重點是什么? 你想達到什么目的? 為什么不這樣做:
Item<Object> item = new Item<Object>(obj);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.