2010-10-18 12 views
10
public class Sample<T>{ 

T data; 

    Sample(){ 

    data = ????; 

    } 

} 

Wie kann ich den Daten einen Standardwert zuweisen?Generics Standardkonstruktor Java

+0

Duplizieren von: http://stackoverflow.com/questions/182636/how-to-determine-the-class-of-a-generic-type – Nicolas

Antwort

6

Sie können nicht. Der Typ Tis erased zur Laufzeit, so dass Sie es nicht instanziieren können.

Wenn Sie ein Class Argument an die Sample(..) Konstruktor übergeben, können Sie rufen clazz.newInstance()

+6

* "Sie können es nicht." * ... es sei denn, der Standardwert ist 'null'. :-) –

+0

Ja, das ist das Offensichtliche :) – Bozho

8

Bozho richtig ist (man kann nicht). Wenn Sie möchten, dass es mit einem Wert beginnt, stellen Sie diesen Wert als Argument für den Konstruktor ein. Zum Beispiel:

public class Sample<T> { 
    T data; 
    Sample(T data) { 
    this.data = data; 
    } 
}