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
想法是获取虚拟实例,即Test实现。 这种情况有什么问题?
更新: 终于我明白了。看来test.get()中有一个错误。
答案 0 :(得分:0)
尝试删除广告(Virtual)
类型并将其替换为Test
:
Virtual instance = (Virtual) cls.newInstance();
将其更改为:
Virtual instance = Test.class.cast(cls.newInstance());
您无法创建Virtual
的实例,因为它是界面。但是,您可以将Test
类的实例分配给Virtual
类型的引用变量。