好的,据我所知,我了解关于final
变量的这些事情。
- 它应该只分配一次
- 所有
final
变量都应该在构造函数完成之前初始化
现在使用上述内容,我不明白以下内容如何不起作用:
public class FinalTest implements AnotherClass {
private final Something something;
private final otherthing;
@Override
public void setStuff(Something something) {
this.something = something;
this.otherthing = new SomeClass(something);
}
public FinalTest(Something something) {
setStuff(something);
}
}
在这里,在构造函数完成之前,final
正在设置变量。那么为什么编译器会抱怨它呢?