"Vererben" statischer Felder/Methoden

Saheeda

Top Contributor
Hi,

ich habe folgendes Konstrukt und bin mir nicht sicher, wie ich das am saubersten löse:

Ich habe in den Unterklassen einige Attribute, welche für sämtliche Instanzen dieser speziellen Unterklasse gleich sein sollen. Allerdings soll jede Unterklasse eigene Werte dafür haben, z.B. soll "Dragon" zwar prinzipiell über dieses Feld verfügen, aber mit komplett anderen Werten, als "Archer".

Java:
public abstract class Unit {
	private static Map<Level, Boni> boniMap;
}

public class Dragon extends Unit {
	private static Map<Level, Boni> boniMap;
	public static Map<Level, Boni> getBoniMap() {
		return Dragon.boniMap;
	}
}

public class Archer extends Unit {
	private static Map<Level, Boni> boniMap;
	public static Map<Level, Boni> getBoniMap() {
		return Archer.boniMap;
	}
}

Da dieses Feld statisch ist, gehen mir aber einige Vorteile der Vererbung flöten und ich müsste es in jeder Unterklasse erneut deklarieren. Sieht für mich sehr unsauber aus und verletzt das DRY-Prinzip.

Gibt es eine Möglichkeit, wie dieses Feld zwar für alle Instanzen der jeweiligen Klasse identisch ist, ich es aber trotzdem nicht überall erneut explizit deklarieren muss?
 

Joose

Top Contributor
Ein Variante wäre "boniMap" in der Basisklasse Unit als nicht statisch zu deklarieren und diese dann jeweils im Konstruktor der spezifischen Klassen zu befüllen.
Problem: Es müllt sehr den Speicher zu da natürlich die Listen alle X mal existieren.

Eine andere Variante wäre es die "Boni" Maps auszulagern in eine eigene Klasse (welche nur 1x existiert - kein Singleton ;)).
Java:
public class UnitBoniCache {
	private Map<Class, Map<Level, Boni>> boni;
	
	....
}
Dieser "Cache" wird 1x bei Programmstart geladen und jedes Objekt holt sich im Konstruktor die Referenz auf die richtige Map ab.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Rudolf JUnit4-Testklasse erweitern ohne zu vererben Allgemeine Java-Themen 6
S konstruktor vererben Allgemeine Java-Themen 5
K Singleton vererben Allgemeine Java-Themen 15
E Singleton vererben Allgemeine Java-Themen 10
S Konstruktor vererben Allgemeine Java-Themen 9
Zrebna Limitierungen statischer Codeanalyse? Allgemeine Java-Themen 19
G Synchronisation nicht statischer Methoden Allgemeine Java-Themen 4
W Frage zu Refactoring statischer Methoden Allgemeine Java-Themen 4
T Polymorphie Statischer Methodenaufruf einer Kindsklasse Allgemeine Java-Themen 4
Eldorado Barcodes mit statischer Breite generieren Allgemeine Java-Themen 3
D Referenzen weiterreichen vs. statischer Zugriff Allgemeine Java-Themen 3
M Konstruktor / statischer Block Allgemeine Java-Themen 13
S Enums - statischer import Allgemeine Java-Themen 2
D Lombock primitive Felder in RequiredArgsConstructor Allgemeine Java-Themen 2
parrot Mehrdimmensionale Felder Allgemeine Java-Themen 4
parrot Felder - Feldwerte verdoppeln Allgemeine Java-Themen 18
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
S Java Felder Allgemeine Java-Themen 13
T Maximale Felder maximale Variablen Allgemeine Java-Themen 2
perlenfischer1984 Mit Lombok Builder Felder in Super Klasse füllen Allgemeine Java-Themen 12
T URL + Felder Allgemeine Java-Themen 1
C Zugriff auf Event felder Allgemeine Java-Themen 0
L iText PDF Form-Felder werden nach Bearbeitung mit iText nicht mehr richtig erkannt. Allgemeine Java-Themen 2
faetzminator verschiedene Beans, verschiedene Felder "koppeln" Allgemeine Java-Themen 3
K Hilfe Felder Allgemeine Java-Themen 7
I Vergleich zweier Felder Allgemeine Java-Themen 3
S Zu viele Felder. Allgemeine Java-Themen 4
P Reflection - Wie rufe ich die Felder einer Klasse in einer Methode der Basisklasse? Allgemeine Java-Themen 4
megachucky Java Reflection -> versteckte Felder finden? Allgemeine Java-Themen 3
D Auf annotierte Felder oder Methoden zugreifen Allgemeine Java-Themen 4
J Instanz-Felder einer Klasse initialisieren Allgemeine Java-Themen 6
D Felder (Arrays) Allgemeine Java-Themen 4
F (Wie) sortiert ihr eure Felder, Methoden, etc? Allgemeine Java-Themen 19
G mit reflection an die felder einer klasse rankommen Allgemeine Java-Themen 4
L Datenbank Abfrage (Felder&Tabelle nicht fix) in ArrayLis Allgemeine Java-Themen 4
M Felder + Werte einer Klasse auslesen Allgemeine Java-Themen 6
P Bei String alle Alphanumerischen Felder löschen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben