我有一些类似的代码:
List<ClassB> back = new ArrayList<ClassB>();
for( ClassA classA : getClassAs() )
{
if( classA instanceof ClassB )
{
back.add((ClassB) classA);
}
}
ClassB扩展了ClassA
在lambdaj有什么聪明的方法可以做到这一点吗?我知道有匹配器的IsInstanceOf,但我必须用"手工"进行铸造。
提前感谢
mojoo
这不是很有效,但可能会提供一些方向:
你的原始列表在你的帖子中被命名为"返回":
1.按类型将"返回"元素过滤到新列表中(列表仅包含类型B的对象)
List bList = Lambda.filter(org.hamcrest.Matchers.instanceOf(B.class),back);
2.使用转换器对象将过滤对象列表bList转换为列表
List<B> list = Lambda.convert(bList,new Converter<Object, B>() {
public B convert(Object from) {
return (B) from;
}
});