2016-10-22 8 views
0

Java 8の機能をさらに使用するために更新したいと思っているJavaアプリケーションがあります。表現可能な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())を言っては、ラムダを使用してこれを行うより表現方法は何ですか?

答えて

1

それとは別にFunction.apply()

を呼び出すために何より表現の構文はありませんが、何がラムダで達成しようとしていますか?あなたはまだいくつかの点で機能が必要な場合は、また一つに方法を変えることができます

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

これは知恵です。ラムダ式のためのラムダ式の記述は、学習のために行うのであれば問題ありませんが、実際にはそれらの不要な使い方により、コードを読み込みや維持が困難になる可能性があります。ラムダの代わりに関数+メソッド参照を使用するというここで使用されているイディオムは良いものです。私は両方を使用していますが、最も読みやすく、最も多くの情報を持っています。メソッド参照で使用される関数名は、何が行われているのかを示すドキュメントの一種であり、ラムダ式が単純で明白でない場合、むしろラムダよりも理解しやすいでしょう。 –

関連する問題