# enum Integer zuweisen



## Gast (14. Aug 2008)

Ist es möglich in einer enum Klasse den enums werte zuweisen
z.b.:


```
public enum Test {

 X1 = 4, X2 = 6, X3 = 89;
}
```

So gehts mal nicht , aber gibt es eine andere Möglichkeit, das so in der Art zu machen?


----------



## Guest (14. Aug 2008)

Habs schon, danke


----------



## musiKk (14. Aug 2008)

Ich mach das immer so:

```
public enum Test {
	X1(2),
	X2(6),
	X3(89);
	
	private int value;
	
	private Test(int value) {
		this.value = value;
	}
	
	public int getValue() {
		return value;
	}
}
```

... whatever


----------



## Guest (14. Aug 2008)

Gehts auch irgendwie anders, das ich einer Methode in der Enum- Klasse eine Zahl übergebe und dann den Namen zurückbekomme, z.b. übergebe ich 2 und bekomme X1 zurück??


----------



## tfa (14. Aug 2008)

Da musst du dir wohl selber eine Methode schreiben.


----------



## Guest (14. Aug 2008)

ich wollte das mit einem switch(this) machen aber das geht nicht, da die Methoden in einem Enum static sein müssen und ich daher das this nicht verwenden kann, gibts noch eine Möglichkeit das ich in meiner selber geschriebene Methode mit einer switch- Anweisung mache?


----------



## SlaterB (14. Aug 2008)

Methoden in einem Enum müssen nicht static-er sein als in anderen Klassen auch,
this funktioniert, switches funktionieren,

nur deine Erklärungen und Fragen, die funktionieren nicht


----------



## lhein (14. Aug 2008)

Anonymous hat gesagt.:
			
		

> Gehts auch irgendwie anders, das ich einer Methode in der Enum- Klasse eine Zahl übergebe und dann den Namen zurückbekomme, z.b. übergebe ich 2 und bekomme X1 zurück??



Die Methode musst Du selber machen...


```
public static Test getEnumByValue(int value) {
   switch (value) {
       case 2:   return X1;
       case 6:   return X2;
       case 89: return X3;
       default:  return null;
   }
}
```

Und über .name() bzw. .toString() kannst Du den Namen eines Enums erfahren.
Also X1.name() bzw. X1.toString() sollte was brauchbares liefern.

lhein


----------



## musiKk (14. Aug 2008)

Naja, ein bisschen generischer geht das schon:

```
public static Test getEnumByValue(int value) {
	for(Test test : Test.values()) {
		if(test.getValue() == value) {
			return test;
		}
	}
	return null;
}
```


----------



## lhein (14. Aug 2008)

korrekt


----------



## Guest (14. Aug 2008)

mit getValue() komm ihc nicht ganz klar, wie schaut diese Methode aus??


----------



## musiKk (14. Aug 2008)

Steht doch oben?


----------



## SlaterB (14. Aug 2008)

ich sehe was was du nicht siehst,
und das steht schon in diesem Topic


----------



## Guest (14. Aug 2008)

Ah, ok, ist ja schon nachmittag (nach mittag)


----------



## tfa (14. Aug 2008)

Ein Switch würde ich nicht nehmen, das ist wartungsunfreundlich. Dann lieber die Suchschleife oder eine Map, wenn du viele Enum-Werte hast.


----------

