ClassCastException:无法创建Interface实例

时间:2015-05-15 21:10:17

标签: java classcastexception

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()中有一个错误。

1 个答案:

答案 0 :(得分:0)

尝试删除广告(Virtual)类型并将其替换为Test

Virtual instance = (Virtual) cls.newInstance(); 

将其更改为:

Virtual instance = Test.class.cast(cls.newInstance()); 

您无法创建Virtual的实例,因为它是界面。但是,您可以将Test类的实例分配给Virtual类型的引用变量。