Lambdaj class casting



我有一些类似的代码:

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;
        }
    });

相关内容

  • 没有找到相关文章

最新更新