Instanziierung von Klassen nach Namen in Java
Manche Situationen erfordern die Instanziierung einer Klasse nur unter Verwendung ihres Namens. In diesem Leitfaden werden zwei Methoden untersucht, um dies in Java zu erreichen.
Methode 1: Für Klassen mit Konstruktoren ohne Argumente
Angenommen, die Klasse verfügt über einen Konstruktor ohne Argumente, Verwenden Sie Class.forName(), um ein Class-Objekt zu erhalten, das die Klasse darstellt. Verwenden Sie dann die Methode newInstance(), um eine Instanz zu erstellen. Beachten Sie, dass von dieser Methode allgemein abgeraten wird, da sie die geprüften Ausnahmen von Java umgehen kann.
Beispiel:
Class<?> clazz = Class.forName("java.util.Date"); Object date = clazz.newInstance();
Methode 2: Allgemeiner Ansatz
Für Klassen mit oder ohne Konstruktoren ohne Argumente verwenden einen sichereren Ansatz, bei dem ein Konstruktorobjekt aus dem Klassenobjekt und abgerufen wird Aufrufen seiner newInstance()-Methode.
Beispiel:
Class<?> clazz = Class.forName("com.foo.MyClass"); Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class); Object instance = constructor.newInstance("stringparam", 42);
Hinweis:
Beide Methoden nutzen Reflektion, eine vielseitige Technik, die eine dynamische Inspektion ermöglicht von Klassen und Objekten. Es ist jedoch wichtig, potenzielle Ausnahmen zu behandeln, einschließlich solcher im Zusammenhang mit der Klassenauflösung, der Konstruktorverfügbarkeit und Sicherheitsbeschränkungen, die von der Java Virtual Machine oder dem Sicherheitsmanager auferlegt werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Java-Klassen nur nach Namen instanziieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!