как использовать пакет отражения для создания объекта из пути к классам - PullRequest
0 голосов
/ 13 декабря 2010

Я хочу создать объект, я знаю только его путь к классу. Любая помощь будет оценена.

Ответы [ 2 ]

6 голосов
/ 13 декабря 2010

Если у вас есть полное имя класса в String, используйте Class#forName() и Class#newInstance().

Object o = Class.forName("com.example.Foo").newInstance();

Однако для этого необходимо, чтобы класс уже присутствовал в пути к классам и имел (неявный) конструктор по умолчанию.

Если это не так, и у вас есть местоположение класса в URL, тогда используйте URLClassLoader и передайте его другому Class#forName() метод, который принимает его в качестве аргумента.

URL url = getItSomehow();
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { url });
Object o = Class.forName("com.example.Foo", true, classLoader).newInstance();

Или, если вместо этого у вас есть File, то сначала конвертируйте его в URL:

File file = getItSomehow();
URL url = file.toURI().toURL();
// Continue with URLClassLoader.
2 голосов
/ 13 декабря 2010

Вы имели в виду это?

Class c = Class.forName("java.lang.String");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...