【发布时间】:2010-07-03 17:18:18
【问题描述】:
我遇到了 java 的 instanceof 的问题。这是给我带来麻烦的代码差距:
LinkedList<Double> currentSummary = summary.getFirst().getQuantiles();
...更多代码...
while (!currentSummary.isEmpty()){
if (currentSummary.getFirst() instanceof Double){
orderedSummary.add(new ComparableWrapper<Double, Float>(currentSummary.removeFirst(), currentEpsilon));
}
}
所以,我的问题是,if 条件不会变为真。 currentSummary 中的那些元素要么是 null 要么是 Double 值。我试图拒绝null 的元素。起初我只是添加了它们,后来又遇到了NullPointerException,因为一些(但不是全部!)元素是null。
currentSummary 的示例元素是例如[null, 0.09861866469135272, 10.137051035535745, 107.12083740100329, 371.4371264801424, 827.432799544501, 1206.251577083686]。
有人知道为什么instanceof 在这种情况下不起作用吗?我也试过currentSummary.getFirst() instanceof Object...
提前致谢!
【问题讨论】:
-
不是直接的答案,但是由于您似乎没有从链接列表中删除
null条目,所以在遇到的第一个null上不会无限循环吗?您能否确保getQuantiles()不会首先将null引用添加到您的列表中? -
currentSummary.getFirst() instanceof Object的行为是否不同? -
您也可以尝试
currentSummary.getFirst().getClass()来查看对象实际属于哪个类。 -
不,它没有。但这根本不是问题。如果它为空,我只是忘记删除第一个元素。于是我陷入了无限循环……
标签: java instanceof