在編程難題&代碼高爾夫有this與此代碼元問題:作爲java函數文本的lambda表達式是如何工作的?
interface I {
public static void main(String[] args) {
System.out.println("Hello");
}
String foo(String s);
}
class C {
I i = s -> s.substring(1);
}
這是一個可運行的程序。我一直在玩ideone中的代碼,並能夠創造各種各樣的錯誤,但這對我來說是最奇怪的。
如果你喜歡的東西5
取代s.substring(1)
你得到這個錯誤:
Main.java:16: error: incompatible types: bad return type in lambda expression
I i = s -> 5;//s.substring(1);
^
int cannot be converted to String
這是爲什麼?畢竟,我沒有看到lambda完全實現接口。
你有擡頭的錯誤消息的任何部分:_'I'不是**功能界面** _ –
'類C'創建使用Lambda,你只能做I'的'的實現?爲一個功能界面。當你刪除了唯一的非靜態函數'foo'的定義時,界面'I'不再是一個功能接口 – Alex