2017-04-04 29 views
0

在下面的代碼:自動推斷的乘法有界類型參數 - 是否有可能?

interface Callback { 
    void greet(String greeting); 
} 

private static <T extends Callback & Serializable> void greetMe(T callback) { 
    callback.greet("Hello world!"); 
} 

public static void main(String[] args) { 
    greetMe(greeting -> System.out.println(greeting)); 
} 

下面的行不能編譯,因爲拉姆達不是序列化

greetMe(greeting -> System.out.println(greeting)); 

我的問題是,是否有使拉姆達任何語法糖實現Serializable,還是我必須使它成爲一個非匿名類?

+1

http://stackoverflow.com/questions/22807912/how-to-serialize-a-lambda –

+0

謝謝!這絕對是重複的,這個帖子幫助我解決了這個問題。 – DonAlonzo

回答

1

JLS 15.16. Cast Expressions

糞中可用於顯式「標籤」 lambda表達式或與特定目標類型的方法參考表達。爲了提供適當程度的靈活性,目標類型可以是表示交集類型的類型的列表,只要該交集引起功能接口(§9.8)。

您可以直接投它Serializable

greetMe((Callback & Serializable) greeting -> System.out.println(greeting)); 
+1

關於這個問題有很多話題,請標記爲重複而不是回答。 – Mistalis

+1

你是對的...通常我會標記它們或者將它投票成爲一個複製品......只是發生了,我已經得到了答案,所以關於它是否被問及的進一步研究是在那之後完成的......並且在7分鐘內發生的所有事情;-) – Roland

相關問題