刚刚遇到一个奇葩的小问题:
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 和 Tyrus 参考实现 1.9。