java通过其类查找列表元素

时间:2017-03-03 15:41:47

标签: java list java-7

我使用soot来分析Java代码。因为Soot在使用Java 7时仍然没有完整的Java 8-Support。 我需要获取LinkedRValueBox类的第一个元素。

我的实际列表如下:

  

[ImmediateBox(0),ImmediateBox(1),LinkedRValueBox(0 + 1)]

当然,我可以迭代列表并使用instanceof证明每个元素。 我无法找到解决此问题的任何方法。

1 个答案:

答案 0 :(得分:1)

如果您打开使用第Eclipse Collections7.x的第三方库,则可以detect使用Predicates.instanceOf(),或者如果您需要要过滤列表,可以使用selectInstancesOf()。以下是使用不同类型Number的示例,并检测Double的第一个实例。

MutableList<? extends Number> list =
        Lists.mutable.with(new Integer(0), new Long(0), new Double(0));
Number detect = list.detect(Predicates.instanceOf(Double.class));
MutableList<Double> doubles = list.selectInstancesOf(Double.class);
Double first = doubles.getFirst();
Assert.assertTrue(detect instanceof Double);
Assert.assertSame(detect, first);

Eclipse集合版本8.x使用Java 8编译,但版本7.x适用于Java 5或更高版本。

注意:我是Eclipse Collections的提交者。