我在类级别声明了两个final
变量,但它们未初始化
所以,现在当我尝试为该类创建默认构造函数时,它会给出一个错误说明
The blank final field may not have been initialized
。
为什么会出现此错误?为什么需要在构造函数中初始化最终变量?
我还有另一个查询,即不能在没有默认构造函数的情况下创建实例吗?即使我们有参数化构造函数?
答案 0 :(得分:1)
为什么需要在构造函数中初始化最终变量?
必须在构造函数中初始化final
字段,因为这是final
已定义的含义。
如果调用构造函数,则不必在默认构造函数中设置final
字段。
class A {
final int a;
public A() {
this(0);
}
public A(int a) {
this.a = a;
}
}
是否无法在没有默认构造函数的情况下创建实例?
是。有很多方法可以做到这一点,最常见的方法是调用一个带参数的构造函数。
即使我们有参数化构造函数?
在这种情况下,如果定义一个构造函数,则只有一个没有参数的构造函数。
答案 1 :(得分:0)
Final variable
是那些变量which can not be changed once object is initialized.
所以你必须如何初始化最终变量。如果您提供默认构造函数以及参数化的consructor,则必须初始化这些变量,因为您以后无法更改该值。