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
Mary-Kate OlsenOriginal
2024-12-11 19:08:20237Durchsuche

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();

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);

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!

Stellungnahme:
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