2

我有一些这样的代码:

List<ClassB> back = new ArrayList<ClassB>();
for( ClassA classA : getClassAs() )
{
    if( classA instanceof ClassB )
    {
        back.add((ClassB) classA);
    }
}

B 类扩展 A 类

在 lambdaj 中有一些聪明的方法可以做到这一点吗?我知道有 IsInstanceOf Matcher,但我必须“手动”进行演员阵容。

提前致谢

魔珠

4

1 回答 1

1

这不是那么有效,但可以提供一些方向:

您的原始列表在您的帖子中被命名为“返回”:

1.按类型将“back”元素过滤到新列表中(列表仅包含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;
        }
    });
于 2012-05-11T17:48:46.240 回答