# Wert von enum zur Laufzeit festlegen.



## equin (22. Feb 2011)

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?

```
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


----------



## Gonzo17 (22. Feb 2011)

Ein A mit dem Wert 100 kannst du nur dann erzeugen, wenn du eben 
	
	
	
	





```
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?


----------



## maki (22. Feb 2011)

Denke das Enum hier falsch ist, du willst Objekte einer "normalen" Klasse.


----------



## diel2001 (22. Feb 2011)

Du  kannst doch dafür einfach einen Setter erstellen 
Außerdem muss das final bei der Variable entfernt werden.


```
public void setVal(int val){
            this.val = val;
        }
```


----------



## SlaterB (22. Feb 2011)

> 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


----------



## Andi_CH (22. Feb 2011)

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


```
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);
	}
}
```


----------

