Enums: Mehrere Einträge mit gleicher ID

U

unusedUser

Hallo,

kann ich es bei Enums erreichen, dass mehrere Einträge die gleiche ID haben?

Ich habe schon Folgendes probiert, aber das geht nicht, intern bekommt jedes scheinbar eine eigene ID:

Code:
public enum Observations {
	a(0), c(1), g(2), t(3),
	r(0), y(1), s(2), h(3),
	w(0), v(1), k(2), b(3),
	m(0), n(1), d(2);
	
	private int i;
	
	Observations(int i) {
		this.i = i;
	}
}

Viele Dank im Voraus!
 
Die Eindeutigkeit ist ja gerade der Sinn des Enums.

Dein jetziger Konstruktor und dein Datenelement machen im Moment keinen Sinn, da du i nie benutzt.
Java:
	public enum Observations {
		a(0), c(1), g(2), t(3),
		r(0), y(1), s(2), h(3),
		w(0), v(1), k(2), b(3),
		m(0), n(1), d(2);
		
		private int i;
		
		Observations(int i) {
			this.i = i;
		}
		
		public int ordinal2(){
			return i;
		}
	}

Jetzt hast du eine eigene ordinal-Funktionalität, welche auch doppelte Werte unterstützt.

Java:
Observations.n.ordinal2(); //liefert 1
 
Hallo CPoly,

danke für deine Antwort. Kann ich auch die ordinal-Funktion einfach überschreiben? Ich dachte, ich kann mit Enums auch einfach ein Mapping machen. Oder gibt es dafür andere Methoden? Wollte um ein Switch-Case herumkommen. Wäre an sich aber auch nicht so schlimm.

Viele Grüße,
unusedUser
 
ordinal() von einem enum sollte nach Möglichkeit auch nicht verwendet werden:

Returns the ordinal of this enumeration constant (its position in its enum declaration, where the initial constant is assigned an ordinal of zero). Most programmers will have no use for this method. It is designed for use by sophisticated enum-based data structures, such as EnumSet and EnumMap.

Wie CPoly richtig anmerkt, kannst du aber eine eigene Methode schreiben, wenn du einem enum Eigenschaften geben willst.
 
Zurück