enum Integer zuweisen

  • Themenstarter Themenstarter Gast
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Gast

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

Code:
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?
 
Ich mach das immer so:
Code:
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
 
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??
 
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?
 
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
 
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...

Code:
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
 
Naja, ein bisschen generischer geht das schon:
Code:
public static Test getEnumByValue(int value) {
	for(Test test : Test.values()) {
		if(test.getValue() == value) {
			return test;
		}
	}
	return null;
}
 
mit getValue() komm ihc nicht ganz klar, wie schaut diese Methode aus??
 
ich sehe was was du nicht siehst,
und das steht schon in diesem Topic 😉
 
Ein Switch würde ich nicht nehmen, das ist wartungsunfreundlich. Dann lieber die Suchschleife oder eine Map, wenn du viele Enum-Werte hast.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben