Создание объекта класса по его имени

Создание объекта класса по его имени

В общем виде это выглядет так (http://java-online.ru/java-reflection.xhtml):
[cc lang=»java»]
Class aclass = Class.forName(«Test»);
Object obj = aclass.newInstance();
Test test = (Test) obj;
[/cc]

Пример:
файл Person.java с объявлением интерфейса, в котором содержатся классы:
[cc lang=»java»]
package com.javarush.task.task14.task1411;
public interface Person {
class User implements Person {
void foo() { System.out.println(«Something»); }
}
class Coder implements Person {
void foo() { System.out.println(«Something»); }
}
}
[/cc]

фрагмент файла Solution.java, находящийся в том же пакете:
[cc lang=»java»]
try{
Class c = Class.forName(«com.javarush.task.task14.task1411.Person$User»);
Person person = (Person)c.newInstance();
}
catch (Exception | NoClassDefFoundError e){
System.out.println(e);
}
[/cc]

Замечу, что если в строке 2 вместо $User будет $user (ошибка в регистре), то будет брошен NoClassDefFoundError.

(Просмотрено 340 раз, 1 раз за сегодня)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *