2009-01-22 10 views
5

Gibt es in Java eine Möglichkeit zum programmgesteuerten Importieren einer Klasse mit ihrem vollständigen Namen als String (d. H. Wie "com.mydummypackage.MyClass")?Programmgesteuertes Importieren der Java-Klasse

+0

Meinst du importieren (in die .java-Datei) oder meinst du instanziieren? –

Antwort

15

Wenn von „Import“ Sie bedeuten „laden ein Class Objekt, so dass Sie Reflexionsmethoden ausführen können“, dann verwenden:

Class<?> clazz = Class.forName("com.mypackage.MyClass"); 

(Die wir Grund Leser durch Ihr Wort verwechselt wurden „Import“ ist, dass typischerweise Dies bezieht sich auf das Schlüsselwort import, das im oberen Bereich der Java-Klassendateien verwendet wird, um dem Compiler mitzuteilen, wie Klassennamen erweitert werden sollen (z. B. import java.util.*;).

+1

Objekt o = clazz.newInstance(); wird benötigt, wenn wir das Objekt dieser Klasse verwenden wollen. –

6

Die Java Dokumentation eine große Quelle des Wissens für Sachen wie diese ist, empfehle ich Ihnen auf das Klassenobjekt Dokumentation lesen, die hier gefunden werden kann: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html

Wie in Jason Cohen Antwort erwähnt Sie laden Klasse-Objekt die folgende Codezeile verwenden und dann eine Instanz dieser Klasse erstellen Sie wie so die newInstance Methode der Klasse Objekt ausführen würde:

Class<?> clazz = Class.forName("com.mypackage.MyClass"); 
Object o = clazz.newInstance(); 
4

verwechseln Sie nicht „Import“ mit Klasse Laden.

Die Importanweisung lädt nichts. Sie müssen nur den vollständig aufgelösten Klassennamen eingeben. Wenn Sie foo.bar.Baz importieren, können Sie in Ihrem Code auf die Klasse Baz verweisen, anstatt sie buchstabieren zu müssen. Das ist alles wichtig.

+0

aaaah ... ok, ich sehe jetzt. Vielen Dank, das ist ein wichtiger Teil, den ich beim Lesen von Java 101 vermisst habe. – xelurg

Verwandte Themen