2009-01-22 17 views
5

Czy istnieje sposób w języku Java, aby programowo zaimportować klasę, podając jej pełną nazwę jako ciąg (np. Jak "com.mydummypackage.MyClass")?Jak programowo importować klasę Java

+0

Masz na myśli import (do pliku .java) lub masz na myśli instantiate? –

Odpowiedz

15

Jeśli przez „import” masz na myśli „załadować Class obiektu, dzięki czemu można uruchomić metod refleksji”, a następnie użyć:

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

(powód my czytelnicy byli zdezorientowani przez słowo „import” jest to, że zazwyczaj odnosi się to do słowa kluczowego import używanego w górnej części plików klasy Java, aby poinformować kompilator w jaki sposób rozszerzyć nazwy klas, np. import java.util.*;).

+1

Obiekt o = clazz.newInstance(); jest potrzebny, jeśli chcemy użyć obiektu tej klasy. –

6
Dokumentacja

Java jest doskonałym źródłem wiedzy dla rzeczy jak ta, proponuję przeczytać w dokumentacji obiektu klasy, które można znaleźć tutaj: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html

Jak wspomniano w odpowiedzi Jasona Cohena można załadować klasa obiektu za pomocą poniższego wiersza kodu, a następnie utworzyć instancję tej klasy byś wykonanie metody newInstance obiektu klasy tak:

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

nie należy mylić „import” z klasy załadunku.

Instrukcja importowania niczego nie ładuje. Wszystko, co robi, to oszczędzić ci konieczności wypisywania w pełni rozwiązanej nazwy klasy. Jeśli importujesz foo.bar.Baz, możesz odwoływać się do klasy Baz w swoim kodzie, zamiast wypowiadać go. To wszystko oznacza import.

+0

aaaah ... ok, teraz widzę. Wielkie dzięki, jest to ważny fragment, który przeoczyłem czytając Java 101 ... – xelurg