2014-11-07 3 views
0

У меня есть класс, который выглядит как:Instantiate общий класс

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. Есть ли способ создать экземпляр записи с этой информацией? Если нет, что я могу сделать для динамического создания записей?

Спасибо!

+1

Вы имеете в виду, что на самом деле у вас нет экземпляров 'k' и' v'? Вам нужны те, которые вызывают конструктор (не имеет ничего общего с дженериками). – Thilo

+4

Generics - это концепция времени компиляции. –

+0

У меня есть экземпляры K и V. Я хочу сделать что-то вроде Entry entry = new Entry ("a", "b"), только используя информацию о классе, здесь String. класс. Это возможно? – user3705507

ответ

2

Программа похожа

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

означает, что вы знаете тип во время компиляции, что лучше, чем Object. Итак, вы можете сделать

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

как хорошо. Нет «не зная тип во время выполнения», вы всегда будете знать, что экземпляр не менее Object, и это то, что вы можете использовать и в родовых классах. Вам не нужно использовать конкретный тип времени выполнения.