java - 子类中具有不同值的静态参数

标签 java parameters static subclass

我想为以下问题创建一个没有太多冗余的解决方案:

我有一个抽象类 Unit、子类 SubUnit1SubUnit2。所有 Unit 都有一个 maxValue,它与 SubUnit1SubUnit2 不同,但对于所有实例都应该相同任何时候都属于同一个子单元。

我不想复制这些值的所有 setter、getter 或某种方法,因为它们对于所有子类都是相同的。我也不想使用普通参数并将方法传递给子类,并在必要时更新这些子类的每个实例。当我创建新实例时,以某种方式获取当前值。

有没有办法在父类Unit中声明某种静态参数和方法,这些参数和方法在不同的子类中有所不同?

最佳答案

您可以在父类中定义一个 protected 构造函数来接受 MAXVALUE 的值

public abstract class Unit {
   private final int maximum;

   protected Unit(int maximum) {
      this.maximum = maximum;
   }

   public int getMaximum() {
      return maximum;
   }
}

然后在派生类中公开构造函数,这些构造函数使用每个子类唯一的固定值调用父级构造函数。

public class SubUnit1 {
   private static final int SUBUNIT1_MAX = 10;

   public SubUnit1() {
      super(SUBUNIT1_MAX);
   }
}

关于java - 子类中具有不同值的静态参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14913089/

相关文章:

Java TL1协议(protocol)

java - 对于 Java 类,内部锁实际上意味着什么?

java - 将数组名称作为类方法中的参数传递

java - 在Java中将敏感数据保存在私有(private)静态字段中是否安全?

ios - 什么时候在 Swift 中使用静态常量和变量?

Java codingbat 帮助 - withoutString

java - 服务器/客户端套接字和 ObjectOutputStream

Java - 从方法的参数获取数组位置

将变量作为参数的默认值的 PHP 函数

php - 测试函数是否从静态上下文运行