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

T data; 

    Sample(){ 

    data = ????; 

    } 

} 

Come posso assegnare un valore predefinito ai dati?Generics Default Constructor Java

+0

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

risposta

6

Non è possibile. Il tipo Tis erased in fase di esecuzione, quindi non è possibile istanziarlo.

Se si passa un argomento Class al costruttore Sample(..), è possibile chiamare clazz.newInstance()

+6

* "Non è possibile." * ... a meno che il valore predefinito sia 'null'. :-) –

+0

sì, quello è ovvio :) – Bozho

8

Bozho è giusto (non è possibile). Se si desidera assolutamente che inizi con un valore, rendere tale valore un argomento per il costruttore. Per esempio:

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