Datentypen Enum-Werte Bestanteil von anderem Enum

Hallo,
Kann man ein Enum um ein anderes erweitern?

Mit folgendem Beispiel, versuche ich zu verdeutlichen, was ich meine:
Java:
import java.util.ArrayList;

public class Board {
	private ArrayList<CellValue> cells;
}

enum Player {
	BLACK, WHITE
}

enum CellValue {
	GRAS, STONE, WATER,
	BLACK, WHITE // Player
}
Es gibt ein Spielbrett mit Zellen. In diesen Zellen kann ein Spieler (BLACK, WHITE) stehen oder etwas anderes (GRAS, STONE, WATER).
In CellValue müssen nochmal alle Werte von Player aufgezählt werden, was extrem umständlich ist. Kann man nicht irgendwie sagen, dass alle Werte von Player Werte von CellValue sein sollen?

Vielen Dank,
Michael
 

TKausL

Top Contributor
Ich denke dein Problem liegt irgendwo anders.
Denn wenn ich mir das so überdenke, kann ein Player auch AUF Grass stehen. So wie du das allerdings vorhast geht es nicht.
 

Marco13

Top Contributor
Ich denke auch, dass das nicht viel Sinn machen würde ... rein intuitiv. Ein Feld wäre dann ja entweder "GRASS" oder "BLACK", aber ich vermute, du willst "BLACK on GRASS" beschreiben. Da könnte man zwar mit Flags und Bitoperationen anfangen, aber ... wenn es nicht gerade um eine Engine geht, wäre eine abstraktere Beschreibung wohl sinnvoller...
 
Danke für die Antworten.
War eigentlich nur ein Beispiel. Leider ein schlechtes -.- Hier würde man es wohl anders lösen.
Es geht allgemein um die Erweiterung von einem Enum um die Werte eines anderen Enums.
 

KSG9|sebastian

Top Contributor
Enums lassen sich nicht erweitern - letztendlich kommt am Ende auch ne Konstantenklasse raus mit nem Haufen public static-Variablen und ein paar Methoden.

Kannst dir ja mal den Bytecode von ner Enum anschauen, dann erklärt sich auch warum "extends" nicht möglich ist.
 
War mir schon klar, dass man was selber basteln muss. Was haltet ihr von diesem Ansatz:
Java:
import java.util.ArrayList;

public class Board {
	private ArrayList<CellValue> cells;

	public Board() {
		cells = new ArrayList<CellValue>();
		cells.add(CellValue.GRAS);
		cells.add(CellValue.STONE);
		cells.add(CellValue.WATER);
		cells.add(Player.BLACK);
		cells.add(Player.WHITE);
	}

}

class Player extends CellValue {
	public static final Player BLACK = new Player();
	public static final Player WHITE = new Player();

	protected Player() {}
}

class CellValue {
	public static final CellValue GRAS = new CellValue();
	public static final CellValue STONE = new CellValue();
	public static final CellValue WATER = new CellValue();

	protected CellValue() {}
}
Ist zwar kein richtiges enum, aber abgesehen von switch sollte man es wie ein enum verwenden können. Oder fallen euch weitere Einschränkungen auf?

Schöne Grüße,
Michael
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Wenn du die enums nicht gerade in einem switch verwenden willst, hilft dir evtl. das weiter:
Java:
public interface Terrain<T extends Enum<T>> {
  // durch "<T extends Enum<T>>" kann das Interface nur in enums verwendet werden
  // ob's Sinn macht, erschliesst sich mir nicht.
}

public enum StandardTerrain implements Terrain<StandardTerrain> {
  LAND, WATER,
}

public enum ExtendedTerrain implements Terrain<ExtendedTerrain> {
  GRASS, STONE,
}
In seinem Programm verwendet man nun ausschliesslich nur noch das Interface ("Terrain<?>"), statt die konkreten Enums. Das birgt aber leider den Nachteil, dass man diese nicht mehr in switches verwenden kann, aber dass scheint dir ja ohnehin nicht wichtig.
 
Zuletzt bearbeitet von einem Moderator:

Marco13

Top Contributor
Vielleicht solltest du wirklich nochmal beschreiben, was du eigentlich vorhast - also das Ziel, nicht den "Lösungs"ansatz....
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
F Enum-werte als Methoden-Parameter übergeben Allgemeine Java-Themen 6
J Best Practice Generics mit Enum Allgemeine Java-Themen 3
A Ist ein enum hier richtig? Enum toString() Methode. Allgemeine Java-Themen 1
E Eigenen "Aufzählungstyp" erstellen - mit enum ? Allgemeine Java-Themen 18
I Enum gegen Enum tauschen Allgemeine Java-Themen 1
Neumi5694 Interface Generics für Enum-Filterung verwenden Allgemeine Java-Themen 5
perlenfischer1984 TestNG - Enum testen Allgemeine Java-Themen 1
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
Q Enum Allgemeine Java-Themen 3
F Enum und Klasseninhalt Allgemeine Java-Themen 1
K Enum mit switch Allgemeine Java-Themen 2
D Enum Kategorien Allgemeine Java-Themen 10
M Enum austauschbar machen Allgemeine Java-Themen 3
Rudolf State Pattern als Enum? Allgemeine Java-Themen 10
E Klassen Enum überladen od. austauschbar machen? Allgemeine Java-Themen 2
EnHancEd[] kurze enum-Frage Allgemeine Java-Themen 4
X Java findet eine Enum Klasse nicht Allgemeine Java-Themen 2
A Dynamisches Enum? Allgemeine Java-Themen 2
E Wert von enum zur Laufzeit festlegen. Allgemeine Java-Themen 5
D Methode für generische enummap/enum Allgemeine Java-Themen 10
D Array oder Vector in Enum Deklarieren Allgemeine Java-Themen 3
L HashMap mit Enum Keys Allgemeine Java-Themen 3
G Enum mit Array Allgemeine Java-Themen 3
D Wie prüfen, ob ein String Teil eines Enum Types ist? Allgemeine Java-Themen 12
H2SO3- Enum mit Java 1.4 Allgemeine Java-Themen 6
S Erstes Enum bekommen? Allgemeine Java-Themen 2
M Verständnis enum - switch Allgemeine Java-Themen 2
R Java enum switch Allgemeine Java-Themen 11
S Enum-Class valueOf Function? Allgemeine Java-Themen 1
R Java enum Allgemeine Java-Themen 5
J Enum Problem: compiliert nicht mit Sun's compiler. Allgemeine Java-Themen 2
V Wie Enum an Funktion "übergeben" ? Allgemeine Java-Themen 4
N Java und Enum Allgemeine Java-Themen 3
GilbertGrape persistentes Enum oder Konstanten? Allgemeine Java-Themen 3
G enum Integer zuweisen Allgemeine Java-Themen 14
G class, interface, or enum exp? Allgemeine Java-Themen 2
P enum Allgemeine Java-Themen 7
S Java Enum und ordinal() Allgemeine Java-Themen 4
S Enum Fehler Allgemeine Java-Themen 17
C Enum-namespace ? Allgemeine Java-Themen 5
G Effizienz von enum vs. Konstanten Allgemeine Java-Themen 4
C enum und Vererbung Allgemeine Java-Themen 3
K Warunung und Fehler bei Enum.valueOf Allgemeine Java-Themen 2
C enum Strings mit punkt ? Allgemeine Java-Themen 3
J Enum in Java Allgemeine Java-Themen 19
O Werte einer Generic LinkedList zusammenrechenen Allgemeine Java-Themen 14
C In DefaultTableModel nachträglich Werte einfügen Allgemeine Java-Themen 2
rosima26 Unterschiedliche Werte bei return/print Allgemeine Java-Themen 12
berserkerdq2 Kann man in IJVM maximal 3 Werte im Stack haben? Allgemeine Java-Themen 3
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
MiMa Werte in liste speichern? Allgemeine Java-Themen 3
Arif Math.cos liefert komische Werte Allgemeine Java-Themen 8
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
Henrithebegiinerofjava Erste Schritte Werte in Eingabefelder einlesen und wiederholen lassen. Allgemeine Java-Themen 3
I Java: public final Werte: Gute oder schlechte Praxis? Allgemeine Java-Themen 6
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
P Static Variable -> unterschiedliche Werte? Allgemeine Java-Themen 1
J Swing UIManager Werte Allgemeine Java-Themen 6
4 Java 2 ArrayListen Werte herauslesen/übernehmen Allgemeine Java-Themen 4
KeVoZ_ int Werte in einen String fassen Allgemeine Java-Themen 4
N Werte aus Hashmap auslesen und übertragen Allgemeine Java-Themen 8
2 mehrere Json Werte Parsen Allgemeine Java-Themen 3
R jTable, nur Werte zwischen 2 Double values ausgeben Allgemeine Java-Themen 3
B Übergebene Werte in Gerätedatei schreiben Allgemeine Java-Themen 2
M Exceltabelle in Java erstellen und Werte einlesen Allgemeine Java-Themen 32
N Werte aus Arrays auslesen funktioniert nicht Allgemeine Java-Themen 5
R Int werte vergleichen und Anzahl Paare ausgeben Allgemeine Java-Themen 4
O Klassen Programm in Klassen unterteilt, werte werden nicht mehr übernommen Allgemeine Java-Themen 3
R kann man irgendwie mit Arrays mit Eingabefenstern und Schleifen Werte abklappern? Allgemeine Java-Themen 2
L Windows CMD werte Parsen. Allgemeine Java-Themen 2
M Werte aus DB in Liste speichern ohne mehrfach speicherung Allgemeine Java-Themen 18
K Methoden Arrays auf true Werte prüfen Allgemeine Java-Themen 4
R Variablen per HSSF geheime Werte von JAVA an EXCEL Allgemeine Java-Themen 2
ARadauer Checksumme über BigDecimal Werte Allgemeine Java-Themen 11
Q GregorianCalendar Methode add liefert komische Werte Allgemeine Java-Themen 3
BRoll Image RGB Werte auslesen und vergleichen Allgemeine Java-Themen 8
Madlip Variablen 3 Werte aus ArrayList und weiter ... Allgemeine Java-Themen 4
M Aus Excel Tabelle lesen und Werte in Array speichern Allgemeine Java-Themen 15
A String Array Werte in neues String Array übernehmen Allgemeine Java-Themen 5
S OOP Objekte als Return-Werte: Einen Klon zurückgeben oder Instanz auf das Feld? Allgemeine Java-Themen 10
R Zusammenhängende Werte in 2-dim. Array finden und zählen Allgemeine Java-Themen 3
S Sinnvolles skalieren von Werte-Set? Allgemeine Java-Themen 2
S Keytool: mögliche Werte für Parameter Allgemeine Java-Themen 4
P Werte in Array zählen und Summe der einzelnen Teile ausgeben Allgemeine Java-Themen 10
L Veränderbare Werte zusammenfassen Allgemeine Java-Themen 18
P Variablen Werte der Objektvariablen mit getFields() abfragen Allgemeine Java-Themen 2
O Variablen System.getenv: Sinnlose Werte, Arrays?! Allgemeine Java-Themen 6
J JSONObject Reihenfolge der Werte? Allgemeine Java-Themen 4
T java.uil.Random liefert negative Werte Allgemeine Java-Themen 2
c_sidi90 Werte an bestimmten Position aus PDF in DB sichern Allgemeine Java-Themen 2
C Vergleich von Enums gibt inkorrekte Werte Allgemeine Java-Themen 6
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
S Werte aus 2 eindimensionale boolean arrays mithilfe von logischen operatoren berechnen Allgemeine Java-Themen 6
C aus einem String einzelne Hex Werte lesen Allgemeine Java-Themen 7
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
M rxtx OutputStream sendet falsche werte Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben