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