在另一个方法中在构造函数中初始化最终变量

Red*_*rav 7 java android

我有一个问题并不是那么大,但仍然让我思考如何使用Java构造函数和方法.

我有一个代表我声明最终的半径的常量,并且还公开供所有人查看.当我永远不会改变半径时,我不希望我的代码充斥着getRadius()方法.

我想在构造函数中初始化常量,因为我想在分配半径之前应用某些条件,必须满足某些条件.但是,这些条件确实占用了一些空间,我想将它们放在其他方法中,以使构造函数更清晰.

整个事情最初看起来像这样

public MyProblematicClass {
   public final int radius;
   public MyProblematicClass(... variables ...) {
      if(... long criteria ...) {
         radius = n;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

而且我喜欢它最终会像

public MyProblematicClass {
       public final int radius;
       public MyProblematicClass(... variables ...) {
          this.setRadiuswithCriteria(criteria);
}

private void setRadiuswithCriteria(criteria crit) {
   if(... crit ...) {
      radius = n;
   }
Run Code Online (Sandbox Code Playgroud)

我知道我可能会将该方法用于其他目的,这就是给我一个'空白字段RADIUS的原因可能尚未初始化,所以我想知道是否有办法添加一个只会是用于建造者,为清洁起见.

ass*_*ias 9

怎么样(使用小半径的半径,因为它不是常数,如评论中所指出的):

public MyProblematicClass(... variables ...) {
    radius = getRadiusWithCriteria(criteria);
}

private int getRadiusWithCriteria(criteria crit) {
   if(... crit ...) {
      return n;
   } else {
      return 0;
   }
}
Run Code Online (Sandbox Code Playgroud)