我只是遇到了一個奇特的小問題:LAMBDA不起作用在WebSocket的會議
javax.websocket.Session session = //...
// this works
newSession.addMessageHandler(new MessageHandler.Whole<String>() {
@Override
public void onMessage(String message) {
MyWebSocket.this.onMessage(message);
}
});
// these don't work
newSession.addMessageHandler((MessageHandler.Whole<String>) MyWebSocket.this::onMessage);
newSession.addMessageHandler((MessageHandler.Whole<String>) message -> MyWebSocket.this.onMessage(message));
void onMessage(String message) {
System.out.println(message);
}
有誰知道爲什麼lambda表達式不會在這種情況下工作嗎?有沒有編譯錯誤,也不例外,什麼都沒有。該方法'的onMessage'只是不叫。
我使用Java 1.8.0_65和泰魯斯參考實現1.9。
[「然而,編譯器將治療會議功能接口的定義作爲一個功能接口不管一個FunctionalInterface註釋是否存在於接口聲明任何接口。」](https://docs.oracle。 COM/JavaSE的/ 8 /文檔/ API/JAVA/LANG/FunctionalInterface.html) 你不需要註釋使用它作爲拉姆達 –
而且會有一個編譯錯誤,如果是這樣的話。 –