Heim > Java > javaLernprogramm > Wie kann ich Java-Klassen nur nach Namen instanziieren?

Wie kann ich Java-Klassen nur nach Namen instanziieren?

Mary-Kate Olsen
Freigeben: 2024-11-25 03:49:11
Original
1042 Leute haben es durchsucht

How Can I Instantiate Java Classes by Name Only?

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();
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage