In Java sind beide Class.forName() und Class.forName().newInstance() spielen eine entscheidende Rolle beim dynamischen Laden von Klassen. Sie dienen jedoch unterschiedlichen Zwecken.
Die Methode Class.forName() nimmt einen vollständig qualifizierten Klassennamen als Zeichenfolge und gibt das dieser Klasse zugeordnete Klassenobjekt zurück. Dazu wird der Klassenlader verwendet, um die Klassendatei zu finden und ihren Inhalt zu lesen. Class.forName() instanziiert die Klasse nicht. Sie bietet lediglich Zugriff auf ihre Metadaten und Informationen.
Die Methode Class.forName().newInstance() hingegen erstellt eine neue Instanz der Klasse, die durch das von Class.forName() zurückgegebene Class-Objekt dargestellt wird. Dazu wird der Standardkonstruktor der Klasse aufgerufen.
Betrachten wir ein Beispiel, um den Unterschied zu veranschaulichen:
package test; public class Demo { public Demo() { System.out.println("Hi!"); } public static void main(String[] args) throws Exception { Class clazz = Class.forName("test.Demo"); Demo demo = (Demo) clazz.newInstance(); } }
In diesem Beispiel:
Der Hauptunterschied zwischen Class.forName() und Class.forName() .newInstance() bedeutet, dass Class.forName() nur die Klasse lädt, während Class.forName().newInstance() nicht nur die Klasse lädt, sondern auch eine Instanz dieser Klasse erstellt.
Class.forName() und Class.forName().newInstance() werden häufig in Szenarien verwendet, in denen dynamisches Laden von Klassen erforderlich ist. Beispiele hierfür sind:
Das obige ist der detaillierte Inhalt vonWas ist der Hauptunterschied zwischen „Class.forName()' und „Class.forName().newInstance()' in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!