2014-11-07 155 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,这也是您可以在泛型类中使用的东西。您不需要使用具体的运行时类型。