List<ClassB> back = new ArrayList<ClassB>();
for( ClassA classA : getClassAs() )
{
if( classA instanceof ClassB )
{
back.add((ClassB) classA);
}
}
ClassB扩展了ClassA
在lambdaj中有一些聪明的方法吗? 我知道有IsInstanceOf匹配器,但我必须通过'手'进行演员。
提前致谢
mojoo
答案 0 :(得分:1)
这不是那么有效,但可能会提供一些方向:
您的原始列表在您的帖子中被命名为“返回”:
1.按类型将“后退”元素过滤到新列表中(列表仅包含类型B的对象)
List bList = Lambda.filter(org.hamcrest.Matchers.instanceOf(B.class),back);
2.使用转换器对象将过滤后的对象列表bList转换为List
List<B> list = Lambda.convert(bList,new Converter<Object, B>() {
public B convert(Object from) {
return (B) from;
}
});