当前位置: 首页 > 知识库问答 >
问题:

终局与有效终局的区别

易昌翰
2023-03-14

我在Java8中使用lambdas,我遇到了警告,从lambda表达式引用的局部变量必须是final或者实际上是final。我知道当我在匿名类中使用变量时,它们在外部类中必须是final的,但final和有效的final有什么区别?

共有1个答案

施俊明
2023-03-14
public class OutterClass {  

  int numberLength; // <== not *final*

  class PhoneNumber {

    PhoneNumber(String phoneNumber) {
        numberLength = 7;   // <== assignment to numberLength
        String currentNumber = phoneNumber.replaceAll(
            regularExpression, "");
        if (currentNumber.length() == numberLength)
            formattedPhoneNumber = currentNumber;
        else
            formattedPhoneNumber = null;
     }

  ...

  }

...

}
 类似资料:
  • 编译器所做的是复制该变量,就像它是通过构造函数传递的一样。我上了这三节课: 1: 2: 为什么实现者不能直接复制变量,不管它是否被修改,所以我们可以这样做:

  • 到目前为止,我认为有效的final和final或多或少是等价的,如果在实际行为中不完全相同,JLS会将它们视为相似的。然后我发现了这个人为的场景: 显然,JLS在这两者之间产生了重要的区别,我不知道为什么。 我阅读其他线程,如 最终和有效最终之间的差异 有效的最终变量vs最终变量 变量“有效最终”是什么意思 但他们并没有详细说明。毕竟,在更广泛的层面上,它们似乎几乎相当。但深入研究,他们显然有所不

  • 我在GIT克隆了两个项目的一些示例,并得出结论,最终看起来更轻量级一点,但我认为这是由于缺乏与Axon相比的特性。 我徒劳地试图找到这两个框架之间的比较,在Stackoverflow中我也找不到任何比较。有人有什么意见吗?

  • 我正在使用RxVertx,它是一种RxJava和Java8,我有一个编译错误。 这是我的代码: 编译错误是:“在封闭范围内定义的局部变量游戏必须是最终的或有效的最终的” 我无法将“game”定义为final,因为我在函数末尾执行分配\set并返回它。 如何编译此代码? 谢了。

  • 问题内容: 我有一个座位数组,该数组有两个字符串(已选择和为空)。单击鼠标后,我想遍历数组并找到选定的座位。当我按下按钮时,它说: 无法分配最终的局部变量seatno,因为它是用封闭类型定义的。 问题答案: 关键是封闭类型中的方法局部变量实际上已 复制 到匿名类的实例中(这是由于激活框架的问题,但我将不做进一步的详细介绍,因为这与问题无关)。这就是为什么它们需要是final的原因,因为嵌套类型实例

  • 本文向大家介绍static全局变量与普通的全局变量有什么区别?相关面试题,主要包含被问及static全局变量与普通的全局变量有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 static全局变量只初使化一次,防止在其他文件单元中被引用; 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 这两者在存储方式