2010-06-14 20 views
15

Kann ich in Java ein Klassenobjekt verwenden, um Klassen dieses Typs dynamisch zu instanziieren?Klasse aus Klassenobjekt instanziieren

ich möchte eine Funktion wie diese.

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

Antwort

24

können Sie Class.newInstance verwenden:

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

... aber das setzt voraus, ein Konstruktor Null-Argument ist. Eine robustere Route besteht darin, durch Class.getConstructor oder Class.getConstructors zu gehen, die Sie in die Verwendung der Reflection-Stuff im java.lang.reflect-Paket nimmt.

2

Verwendung:

type.newInstance() 

Für eine Instanz mit dem leeren costructor erstellen oder verwenden Sie die Methode type.getConstructor (..), um den entsprechenden Konstruktor zu bekommen und es dann aufrufen.

1

Ja, es heißt Reflexion. Sie können dazu die Methode newInstance() verwenden.

+0

Sie können mehr darüber lesen unter: http://java.sun.com/docs/books/tutorial/reflect/index.html Auch dieser Beitrag hat sehr gute Informationen: http://stackoverflow.com/questions/37628/was-ist-reflexion-und-warum-ist-es-nützlich – RonK

0

Verwenden Sie die newInstance() - Methode.

Verwandte Themen