簡體   English   中英

Java內部類/閉包

[英]Java inner class / closure

所以我有以下幾點:

Object a = data.getA();
Object b = data.getB();
Object c = data.getC();
// and so on

這些對象是從API調用中檢索的,可以為null。 我想將這些對象放入列表,但前提是它們不為null。

我可以寫很多行: if(a!=null) {myList.add(a} ,依此類推。但是我感覺有一種更優雅的方法,可以避免每次都要執行null檢查(除了創建輔助方法來執行此操作外)。

例如,使用javascript,我可以創建一個閉包。 對Java有任何想法嗎?

實用方法呢?

public static <T> void addIfNotNull(Collection<T> col, T element){
    if(element != null){
        col.add(element);
    }
}

您可以在Google Code中嘗試使用LambdaJ項目 ,它在Java閉包中的使用非常成熟

根據條件進行過濾:

在給定條件下過濾集合的項是一項非常常見的任務,使用lambdaj可以像以下示例中一樣容易:

List<Integer> biggerThan3 = filter(greaterThan(3), asList(1, 2, 3, 4, 5));

定義如何過濾列表的條件表示為hamcrest匹配器。

或者您可以等待JDK 8 :-)

List list = new ArrayList();

add(data.getA());
add(data.getB());
add(data.getC());

private add(Object o) {
    if (o != null) {
        list.add(o);
    }
}

您可以使用Maybe概念: http : //www.natpryce.com/articles/000776.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM