package test;
public interface Virtual {
String get();
}
package test;
public class Test implements Virtual {
static { System.out.println("hello"); }
public Test() { System.out.println("world"); }
@Override
public String get() {
return "Test clazz";
}
}
//main method
...
Class<?> cls = Class.forName("test.Test", true, classLoader); // it prints "hello"
Virtual instance = (Virtual) cls.newInstance();
// this gets ClassCastException: test.Test cannot be cast to test.Virtual
Идея - получить виртуальный экземпляр, который является тестовой реализацией. Что случилось с этим сценарием?ClassCastException: невозможно создать экземпляр интерфейса
обновление: Наконец-то я получил его. Кажется, в test.get() был eror.
Если вы удаляете свой листинг в 'Virtual instance = (Virtual) cls.newInstance();' как просто 'Virtual instance = cls.newInstance();' вы все еще получаете ошибку? –
Это может помочь http://stackoverflow.com/questions/12383376/classcastexception-when-casting-class-forname-object-to-interface-implemented-by –
@CaptainMan в этом случае не будет компилироваться из-за 'несоответствия типов : невозможно преобразовать из захвата # 2-из? к Virtual'. Но я могу получить только экземпляр объекта. –