簡體   English   中英

將Java對象的實例類型傳遞給通用類類型參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM