Java 将对象强制转换为其自身类型时的ClassCastException

Java 将对象强制转换为其自身类型时的ClassCastException,java,Java,在将Node类型的对象强制转换为DatanodeDescriptor时,我得到了一个ClassCastException。 当我在调试器中检查对象时,它是DatanodeDescriptor类型,并且包含有效数据。有什么问题吗 Node n = null; ... ... n = innerNode.getLeaf(index, null); DatanodeDescriptor d = (DatanodeDescriptor)n; 编辑:我添加了一行进行检查 if (n instanceof

在将Node类型的对象强制转换为DatanodeDescriptor时,我得到了一个
ClassCastException
。 当我在调试器中检查对象时,它是DatanodeDescriptor类型,并且包含有效数据。有什么问题吗

Node n = null;
...
...
n = innerNode.getLeaf(index, null);
DatanodeDescriptor d = (DatanodeDescriptor)n;
编辑:我添加了一行进行检查

if (n instanceof DatanodeDescriptor)System.out.println("It is")

并且它在发出异常之前打印成功

innerNode.getLeaf不返回DatanodeDescriptor或Node实际上不是DatanodeDescriptor

类的名称由包决定。您确定DatanodeDescriptor确实是相同的类吗?您可以考虑使用接口来创建类名的SngTrad。

不恰当地评价它,即

my.node.Node;
other.node.Node;

Node nd = (Node)other; 

您是否执行了
if(n instanceof DatanodeDescriptor)
,并检查了结果?详细信息是什么,例如
{someType}无法转换为DatanodeDescriptor
?java.lang.ClassCastException:org.apache.hadoop.net.NetworkTopology$InnerNode无法转换为org.apache.hadoop.hdfs.server.namenode。DatanodeDescriptor@gparyani:什么是类加载器?如果是因为类加载器,我该如何解决这个问题呢。oracle教程非常好。类加载器呢?强制转换到从不同类加载器加载的类(即使是同一类)将导致
java.lang.ClassCastException