我有两个类:SubEditor和Editor。
public class SubEditor extends Editor {
我正在创建一个SubEditor对象并尝试将其强制转换为编辑器,但我会得到一个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
希望你能帮忙!
问候,
马丁
答案 0 :(得分:3)
可能是,使用不同的ClassLoader实例加载了这两个类。
我认为您可以通过比较两个类加载器来检查是否是这种情况:
Editor.getClassLoader().equals(ClassLoader.getSystemClassLoader())
使用不同的类加载器会产生两个不同的Class
个对象,因此ClassCastException