返回参数在Java8中是如何工作的?
我不熟悉Java8 任何人都可以在下面的代码片段中共享返回参数在Java8中是如何工作的?,java,lambda,java-8,Java,Lambda,Java 8,我不熟悉Java8 任何人都可以在下面的代码片段中共享returnargs返回的内容吗?在Java7中,理解实际发生的事情是什么样子的 public ApplicationRunner initializeConnection( RsvpsWebSocketHandler rsvpsWebSocketHandler) { return args -> { WebSocketClient rsvpsSocketClient
returnargs
返回的内容吗?在Java7中,理解实际发生的事情是什么样子的
public ApplicationRunner initializeConnection(
RsvpsWebSocketHandler rsvpsWebSocketHandler) {
return args -> {
WebSocketClient rsvpsSocketClient = new StandardWebSocketClient();
rsvpsSocketClient.doHandshake(
rsvpsWebSocketHandler, MEETUP_RSVPS_ENDPOINT);
};
}
这是一个
lambda
,它只是一个匿名类的简写初始化。
在Java1.7
中,它看起来像:
return new ApplicationRunner() {
@Override
public void run(ApplicationArguments args) throws Exception {
WebSocketClient rsvpsSocketClient = new StandardWebSocketClient();
rsvpsSocketClient.doHandshake(rsvpsWebSocketHandler, MEETUP_RSVPS_ENDPOINT);
}
};
你知道a是什么吗?@Abra OP提到了对Java8是新手。OP很可能不知道什么是
lambda
。您必须阅读整个语句,从return
到相应的代码>。语句不是returnargs
,而是returnargs->{…}
@Holger,它如何证明“return args->{…};”是ApplicationRunner的run方法的实现?其次,“return args”是否返回实现ApplicationRunner的匿名类的实例?args->{…}
将计算为ApplicationRunner
的实例。但是为什么不按照链接阅读呢?那么在1.8版本中,“ApplicationArguments args”在哪里传递?因为run
是ApplicationRunner
的唯一方法,您可以通过简单地定义该方法来实例化匿名类。lambda
语法假定所有方法参数都位于->
标记的左侧。欲了解更多详情,请阅读。