How do I call one constructor from another in Java?

前端 未结 21 2892
不知归路
不知归路 2020-11-22 01:06

Is it possible to call a constructor from another (within the same class, not from a subclass)? If yes how? And what could be the best way to call another constructor (if th

21条回答
  •  半阙折子戏
    2020-11-22 01:36

    When I need to call another constructor from inside the code (not on the first line), I usually use a helper method like this:

    class MyClass {
       int field;
    
    
       MyClass() {
          init(0);
       } 
       MyClass(int value) {
          if (value<0) {
              init(0);
          } 
          else { 
              init(value);
          }
       }
       void init(int x) {
          field = x;
       }
    }
    

    But most often I try to do it the other way around by calling the more complex constructors from the simpler ones on the first line, to the extent possible. For the above example

    class MyClass {
       int field;
    
       MyClass(int value) {
          if (value<0)
             field = 0;
          else
             field = value;
       }
       MyClass() {
          this(0);
       }
    }
    

提交回复
热议问题