2010-06-14 2 views
15

In java, posso utilizzare un oggetto di classe per creare istanze dinamiche di classi di quel tipo?classe instantiate dall'oggetto classe

io voglio alcune funzioni come questa.

Object foo(Class type) { 
    // return new object of type 'type' 
} 

risposta

24

È possibile utilizzare Class.newInstance:

Object foo(Class type) 
throws InstantiationException, IllegalAccessException { 
    return type.newInstance(); 
} 

... ma che assume c'è un costruttore a zero argomenti. Un percorso più solido è quello di passare attraverso Class.getConstructor o Class.getConstructors, che ti porta a utilizzare il materiale Reflection nel pacchetto java.lang.reflect.

2

Uso:

type.newInstance() 

Per creare un'istanza utilizzando il costructor vuoto, oppure utilizzare il metodo type.getConstructor (..) per ottenere il costruttore rilevante e quindi richiamarlo.

1

Sì, si chiama Reflection. è possibile utilizzare il metodo Class newInstance() per questo.

+0

Si può leggere di più riguardo a: http://java.sun.com/docs/books/tutorial/reflect/index.html Anche questo post ha molto buona informazione: http://stackoverflow.com/domande/37628/Is-what-riflessione-e-perché-è-da-utile – RonK

0

utilizzare il metodo newInstance().