今天我遇到了一个奇怪的问题,但我无法弄明白原因。
假设我们在Java中有一个典型类中的final变量。 我们可以立即初始化它或在类构造函数中初始化,如下所示:
假设我们在Java中有一个典型类中的final变量。 我们可以立即初始化它或在类构造函数中初始化,如下所示:
public class MyClass {
private final int foo;
public MyClass() {
foo = 0;
}
}
但我不知道为什么我们不能在构造函数中调用方法并在该方法中初始化foo
,就像这样:
public class MyClass {
private final int foo;
public MyClass() {
bar();
}
void bar(){
foo = 0;
}
}
因为我认为我们仍处于构造函数流程中,它尚未完成。任何提示将不胜感激。
bar()
方法被调用超过一次。而 final 变量只能被赋值一次。 - user6073886MyClass
并重写bar()
方法。那样一来,它根本就不会被分配了,而我们也不能允许这种情况发生。 - Kayaman