Wie kann ich ein statisches Feld erben und dessen Wert ändern?

Ich arbeite an einem Programm / Spiel, in dem ich eine statische Utility-Klasse mit params habe.

class ParamsGeneral {
   public static final int H_FACTOR = 100;
   public static int MAX_SCORE = 1000;
   ...
}

dann muss ich diese Werte in bestimmten Fällen überschreiben, zum Beispiel beim Spielen auf einer Karte mit begrenzter Punktzahl. Also habe ich folgendes gemacht:

class ParamsLimited extends ParamsGeneral {
   public static int MAX_SCORE = 500;
   // other params stay same
}

Und die beabsichtigte Verwendung ist folgende:

class Player {
   ParamsGeneral par;
   public Player() {
      if(onLimitedMap()){
          par = new ParamLimited();
      }
   }

   public boolean isWinner() {
      if(this.score == par.MAX_SCORE) {
          return true;
      }
      return false;
   }
}

Ich habe diesen Code nicht wirklich getestet, da sich IDE über das Aufrufen statischer Felder durch Instanzen und auch über das Ausblenden von Feldern beschwert. Ich sehe deutlich, dass dieser Code stinkt. Gibt es eine Möglichkeit, dies zu erreichen, oder muss ich jede Param-Klasse separat schreiben?

PS: Ich weiß, ich sollte die Standardklasse abstrakt machen und Getter verwenden. Ich bin nur neugierig, ob es eine Möglichkeit gibt, die Werte statisch zugänglich zu machen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage