Lambdaj类铸造

时间:2012-03-23 07:19:18

标签: java casting lambdaj

我有一些像这样的代码:

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

ClassB扩展了ClassA

在lambdaj中有一些聪明的方法吗? 我知道有IsInstanceOf匹配器,但我必须通过'手'进行演员。

提前致谢

mojoo

1 个答案:

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