Wert von enum zur Laufzeit festlegen.

equin

Aktives Mitglied
Hallo,
wenn ich ein enum habe, gibt es eine Möglichkeit einen Paramter einer enum-Konstante zur Laufzeit zu setzen? Im Unteren Beispiel also beispielsweiße ein "A" mit dem Wert "100" erzeugen?
Java:
public enum EnumExample{
		A(3),
		B(4),
		C(5),
		D(2);
		
		private final int val;
		
		private EnumExample(int val){
			this.val = val;
			
		}
		
		public int getVal(){
			return val;
		}
Viele Grüße
equin
 
Ein A mit dem Wert 100 kannst du nur dann erzeugen, wenn du eben
Code:
A(100)
schreibst. Der Konstruktor darf nicht public sein bei einem Enum, deswegen kannst du natürlich später auch keine neue Instanz außerhalb erzeugen. Wenn du das Attribut nicht final machst, kannst du es denke ich mit einem Setter auch verändern, aber wozu wäre das gut?
 
Du kannst doch dafür einfach einen Setter erstellen
Außerdem muss das final bei der Variable entfernt werden.

Java:
        public void setVal(int val){
            this.val = val;
        }
 
> ein "A" mit dem Wert "100" erzeugen

wäre ansonsten auch etwas für eine neue Klasse mit zwei Attributen: einmal den Enum, A, B, C oder D, einmal einen int-Wert
 
Es geht. Ob es Sinn macht ist sehr fraglich, aber schliesslich überprüft auch niemand ob gleich IDs verwendet werden.

Beachte X, Y und Z

Java:
public enum EnumExample {
	A(3),
	B(4),
	C(5),
	D(2),
	X(42),
	Y(42),
	Z(42);

	private int val;
	
	public void setVal(int pVal) {
		val = pVal;
	}

	private EnumExample(int val){
		this.val = val;
	}

	public static void main(String[] args) {
		EnumExample aaa = EnumExample.A;
		EnumExample bbb = EnumExample.B;
		System.out.println(aaa);
		System.out.println(bbb);
		aaa.setVal(100);
		bbb.setVal(101);
		System.out.println(aaa);
		System.out.println(bbb);
	}
}
 

Neue Themen


Zurück
Oben