В общем виде это выглядет так (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.