Heim > Java > javaLernprogramm > Wie kann ich Java-Klassen nur mit ihren String-Namen instanziieren?

Wie kann ich Java-Klassen nur mit ihren String-Namen instanziieren?

Mary-Kate Olsen
Freigeben: 2024-12-11 19:08:20
Original
171 Leute haben es durchsucht

How Can I Instantiate Java Classes Using Only Their String Names?

Instanziieren von Klassen nach Namen in Java

Java bietet zwei Methoden zum Instanziieren von Klassen durch Übergabe ihres Zeichenfolgennamens:

1. Verwenden von Reflection mit einem Konstruktor ohne Argumente

Wenn die Zielklasse einen Konstruktor ohne Argumente hat, können Sie die Methode Class.forName() verwenden, um das Klassenobjekt abzurufen. Rufen Sie anschließend die Methode newInstance() auf, um eine Instanz zu erstellen:

Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();
Nach dem Login kopieren

2. Verwenden von Reflection für Klassen mit oder ohne Konstruktoren ohne Argumente

Für einen umfassenderen Ansatz, der für Klassen mit oder ohne Konstruktoren ohne Argumente funktioniert, führen Sie die folgenden Schritte aus:

  1. Rufen Sie das Klassenobjekt mit Class.forName() ab.
  2. Rufen Sie das Konstruktorobjekt mit der Methode getConstructor() ab und geben Sie dabei die Parametertypen if an erforderlich.
  3. Instanziieren Sie die Klasse, indem Sie newInstance() für das Konstruktorobjekt aufrufen und die erforderlichen Parameter übergeben.
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 Ansätze beinhalten Reflexion , die mit Bedacht verwendet werden sollte, da sie die Ausnahmebehandlung und Sicherheitsbeschränkungen von Java umgehen kann.

Das obige ist der detaillierte Inhalt vonWie kann ich Java-Klassen nur mit ihren String-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