Как программно импортировать класс Java - PullRequest
5 голосов
/ 23 января 2009

Есть ли в Java способ программным образом импортировать класс с полным именем в виде строки (например, "com.mydummypackage.MyClass")?

Ответы [ 3 ]

15 голосов
/ 23 января 2009

Если под «импортом» вы подразумеваете «загрузить объект Class, чтобы можно было запускать методы отражения», тогда используйте:

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

(Причина, по которой мы, читатели, смутились из-за вашего слова "импорт", заключается в том, что обычно оно относится к ключевому слову import, используемому в верхней части файлов классов Java для указания компилятору, как расширять имена классов, например, import java.util.*;) .

6 голосов
/ 23 января 2009

Java-документация является отличным источником знаний для подобных вещей, я предлагаю вам прочитать документацию по объектам класса, которую можно найти здесь: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Class.html

Как уже упоминалось в ответе Джейсона Коэна, вы можете загрузить объект Class, используя следующую строку кода, а затем создать экземпляр этого класса, выполнив метод newInstance объекта Class следующим образом:

Class<?> clazz = Class.forName( "com.mypackage.MyClass" );
Object o = clazz.newInstance();
4 голосов
/ 23 января 2009

Не путайте «импорт» с загрузкой классов.

Оператор импорта ничего не загружает. Все, что он делает, это избавляет вас от необходимости вводить полностью разрешенное имя класса. Если вы импортируете foo.bar.Baz, вы можете ссылаться на класс Baz в своем коде, вместо того, чтобы указывать его. Это все импортные средства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...