我有2个课程:SubEditor和Editor。public class SubEditor extends Editor {
我正在创建SubEditor对象,并尝试将其强制转换为Editor,但是我将得到ClassCastException:
try {
(Editor) ClassLoader.getSystemClassLoader().loadClass("bla.SubEditor").newInstance();
} catch (Exception ex) {
try {
Object object = ClassLoader.getSystemClassLoader().loadClass("bla.SubEditor").newInstance();
// prints "false":
System.out.println(object instanceof Editor);
// prints "bla.SubEditor":
System.out.println(object.getClass().getCanonicalName());
// prints "Super: bla.Editor":
System.out.println("Super: "+object.getClass().getSuperclass().getCanonicalName());
} catch (Exception e) {
// do sth
}
}
我什至有可能在“ SubEditor instanceof Editor”上得到“ false”?
例外:
java.lang.ClassCastException: bla.SubEditor cannot be cast to bla.Editor
希望能对您有所帮助!
问候,
马丁
最佳答案
这两个类可能是使用不同的ClassLoader实例加载的。
我认为您可以通过比较两个类加载器来检查是否是这种情况:
Editor.getClassLoader().equals(ClassLoader.getSystemClassLoader())
使用不同的类加载器会导致两个不同的
Class
对象,因此ClassCastException