【发布时间】:2020-10-25 07:37:49
【问题描述】:
是的,关于这个话题有很多类似的问题, 但我想澄清一下官方教程是否应该修改。
在 Oracle Java 教程https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html,
在“访问封闭范围的局部变量”副标题下方,
上面写着:
因为这个赋值语句,变量
FirstLevel.x不是 有效地最终了。结果,Java 编译器生成一个 类似于“从 lambda 引用的局部变量”的错误消息 表达式必须是最终的或有效的最终”,其中 lambda 表达式 myConsumer 尝试访问FirstLevel.x变量:System.out.println("x = " + x);
在上一段中,这个FirstLevel.x不需要更正吗?
我认为需要修改为parameter x of methodInFirstLevel,而不是FirstLevel.x。
因为 lambda 表达式并没有引入新级别的作用域,但普通方法(在本例中为methodInFirstLevel)确实会产生新的作用域级别。
我弄错了吗?
(我已尝试在标题和正文中正确描述此问题,但如果应修改此问题,请告诉我。)
【问题讨论】:
-
您在教程中发现了一个错误。举报!
-
@Stephen,感谢您的评论!我是新手,真的不知道你是不是在开玩笑:) 如果不是在开玩笑,你能告诉我如何举报吗?我用谷歌搜索,但对于编程新手来说,错误报告似乎相当困难。
-
不,我不是在开玩笑。但提交 Java 错误报告也不难。只要去这里>> bugreport.java.com/bugreport