为什么Java不允许我间接初始化最终变量?我不明白为什么它不应该工作,我的意思是该方法将始终运行,所以如果直接初始化或通过方法初始化有什么区别?此代码有效:package com.company;public class Person { private final String name; public Person() { name = "bob"; }}这个没有。(即使我摆脱了 IO 代码并对分配给 name 的值进行了硬编码)package com.company;import java.util.Scanner;public class Person { private final String name; public Person() { askName(); } public void askName() { Scanner scanner = new Scanner(System.in); name = scanner.nextLine(); }}
3 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
这是常识。您只能初始化最终变量一次。
构造函数只能被调用一次,因此,除非变量是静态的,否则可以在这里初始化。
但是你的方法可以被无限次调用,这会导致变量被重新引用,这正是 final 关键字应该避免发生的。
添加回答
举报
0/150
提交
取消