2016-10-22 12 views
0

我有一個正在運行的Java應用程序,我正在更新以使用更多Java 8的功能。富有表現力的Java函數

我有一個Function如下:

protected static Function<Notification,Notification> 
    coverpageNotification = n -> n 
         .withMessage("COVERPAGE MESSAGE") 
         .withDate(new Date()); 

,我現在把它用:

s = new HashSet<Notification>(); 
checkNotificationStatus(true, coverpageNotification.apply(new Notification()), s); 
... 
... 

與其說coverpageNotification.apply(new Notification())的,有沒有這樣做使用lambda表達式的更多表達方式?

回答

1

有沒有更多的表現語法來調用Function.apply()

除此之外,什麼是你想實現與lambda表達式? 在目前的形式,這並沒有對一個簡單的方法,任何的優勢:

static Notifaction addCoverPage(Notifaction n){ 
    return n.withMessage("COVERPAGE MESSAGE") 
    .withDate(new Date()); 
} 

checkNotificationStatus(true, addCoverPage(new Notification()), s); 

如果您仍需要一個函數在某一點,你也可以把法合爲一體:

Function<Notification,Notification> x = SomeClass::addCoverPage; 
+0

這是智慧。爲了學習而爲了lambda表達式編寫lambda表達式是可以的,但實際上,它們的不必要的使用會使代碼難以讀取和維護。這裏使用函數+方法引用代替lambda表達式的習慣是很好的。我使用這兩種方法,並歸結爲最具可讀性和最多信息。方法引用中使用的函數名稱是一種正在進行的操作的文檔,如果lambda表達式不簡單明顯,那麼它可以比純粹的lambda更容易理解。 –