将对象强制转换为自己的类型时的ClassCastException

时间:2013-05-01 17:37:25

标签: java

我在向DatanodeDescriptor投射Node类型的对象时得到了ClassCastException。 当我在调试器中检查对象时,它的类型为DatanodeDescriptor并包含有效数据。可能是什么问题?

Node n = null;
...
...
n = innerNode.getLeaf(index, null);
DatanodeDescriptor d = (DatanodeDescriptor)n;

编辑:我添加了一行来检查

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

该类的名称由包完整确定。你确定DatanodeDescriptor真的是同一个类吗?您可以考虑使用接口来铸造类名的insgtread。

调低它,即

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

Node nd = (Node)other;