Skip to content
Advertisement

multiple constructors for final fields in java

I have some final fields in the class like

class A {

 private final boolean a;
 private final boolean b;

 public A(boolean a){
     this.a = a;
 }

 public A(boolean a, boolean b){
     this.a = a;
     this.b = b;
 }
}

But this gives an error that final field ‘b’ might not have been initialized. So any help would be appreciated on how to handle final attributes initialization in case of multiple constructors. It works fine if I have only the second constructor.

Advertisement

Answer

You can initialize b to default false. All the final variable should be initialized in constructors.

 public A(boolean a){
     this.a = a;
     this.b = false;
 }

Or should call other constructors which would initialize them.

 public A(boolean a){
     this(a, false);
 }

 public A(boolean a, boolean b){
     this.a = a;
     this.b = b;
 }

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement