最终变量初始化

时间:2016-02-26 10:42:33

标签: java constructor initialization final

我在类级别声明了两个final变量,但它们未初始化 所以,现在当我尝试为该类创建默认构造函数时,它会给出一个错误说明 The blank final field may not have been initialized

为什么会出现此错误?为什么需要在构造函数中初始化最终变量?

我还有另一个查询,即不能在没有默认构造函数的情况下创建实例吗?即使我们有参数化构造函数?

2 个答案:

答案 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,则必须初始化这些变量,因为您以后无法更改该值。