2014-11-07 160 views
0

我有一個類,它看起來像:實例化泛型類

public class Entry<Key,Value> { 

    private Key k; 
    private Value v; 

    public Entry(Key k , Value v) 
    { 
     this.k = k; 
     this.v = v; 
    } 

    public Key getKey() 
    { 
     return k; 
    } 

    public Value getValue() 
    { 
     return v; 
    } 

} 

我試圖實例化這個類時,我的應用程序運行的一個實例。當我的程序運行時,我只知道Key和Value的類類型。例如,我只知道Key和Value類的類型是String.class和Integer.class。有沒有辦法用這些信息實例化一個Entry?如果不是,我能做些什麼來動態創建條目?

謝謝!

+1

你的意思是你實際上沒有'k'和'​​v'的實例嗎?你需要這些來調用構造函數(與泛型沒有關係)。 – Thilo 2014-11-07 02:09:04

+4

泛型是一個編譯時的概念。 – 2014-11-07 02:12:43

+0

我確實有K和V的實例。我想做類似於Entry entry = new Entry (「a」,「b」)的東西,只使用Class信息,這裏是String。類。那可能嗎? – user3705507 2014-11-07 02:12:46

回答

2

的程序是一樣

String key = getFromSomewhere(); 
Integer value = someMethodResult(); 

意味着你知道一個類型在編譯時是優於Object。所以你可以做

Entry<String,Integer> entry = new Entry<String,Integer>(key, value); 

以及。沒有「在運行時不知道類型」,您將始終知道一個實例至少爲Object,這也是您可以在泛型類中使用的東西。您不需要使用具體的運行時類型。