2012-03-23 63 views
2

我有一些像這樣的代碼: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

這不是有效的,但可以提供一些方向:

您的原始名單的被命名爲 「回」 在您的文章:

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

這個工作,但我猜lambdaj方式比 – 2012-06-21 06:50:55

+0

的「Java」的版本,我同意更復雜。相比於lambdaj,.NET Linq看起來更簡潔,更簡潔 – gunalmel 2012-12-13 20:28:29