来自 Leanpub 的 Java 8 lambda 范围示例

标签 java lambda java-8

我正在尝试阅读此内容 https://leanpub.com/whatsnewinjava8/read#leanpub-auto-scope我有点困惑:

  1. 为什么在 r1 的赋值中调用 toString()
  2. 这如何演示 lambda 可用的范围

最佳答案

我可以肯定地回答第一个问题:

当您调用函数System.out.println时,它将执行以下操作:

Prints an Object and then terminate the line. This method calls at first String.valueOf(x) to get the printed object's string value, then behaves as though it invokes print(String) and then println().

来源:https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html#println-java.lang.Object-

随后调用String.valueOf(x)将执行以下操作:

If the argument is null, then a string equal to "null"; otherwise, the value of obj.toString() is returned.

来源: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#valueOf-java.lang.Object-

由于 this 引用 Hello 的实例,因此它只会在给定实例上调用 Hello.toString() 方法 - 调用堆栈:

System.out.println(this);
String.valueOf(this);
this.toString();

关于范围的第二个问题可能意味着您仍然可以引用封闭类的方法和字段,但我发现这个示例很奇怪,而且文档也没有很好地记录。

关于来自 Leanpub 的 Java 8 lambda 范围示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60679204/

相关文章:

java - 提取 APK : what are . png@ 文件?

java - 面向 Java 新手的 Android 开发资源

c# - 无法将 Lambda 表达式转换为类型 'System.Type',因为它不是委托(delegate)类型

java - 是否可以仅使用 lambda 表达式将字符串转换为 int[]?

python - 是否有 Swift 等同于 Python 中的 'Filter' 函数?

java - 如何从另一个类获取调用者方法的注释

java - 如何在 Websphere 应用程序服务器中设置服务器级别自定义错误文本

java - 如何在 Eclipse 和/或 STS IDE 中启用自动重建 Spring Boot 项目

java - 土耳其 ("Asia/Istanbul"或 "Europe/Istanbul"上的 JDK 时区问题)

java - 如何处理流java 8中的NoSuchElementException和NullPointerException