Verständnisproblem Enums
- From: Andreas Eberhöfer <Andreas.Eberhoefer@xxxxxx>
- Date: Tue, 24 Feb 2009 16:58:46 +0100
Hallo NG,
Kann mir vielleicht einer von Euch erklären, wie Enums intern
funktionieren? Ich wollte eine Enum bauen, die eine statische Funktion
hat, der ich eine Zahl übergeben kann und dann das passende Enum-Element
zurück bekomme. Das Problem ist das die Zahlen nicht durchgängig sind,
sondern Lücken haben und ich so nicht einfach mit der Methode
values()[i] arbeiten kann. Also hab ich mir gedacht, ich arbeite mit
einer Map und geb den Index im Konstruktor der Enum mit. Mein erster
Versuch war:
public enum MyEnum
{
ONE(1),THREE(3)...;
private static final Map<Integer,MyEnum> cache = new
HashMap<Integer,MyEnum>();
private MyEnum(int i)
{
cache.put(i,this);
}
public static MyEnum getValue(int index)
{
return cache.get(index);
}
}
Aber das geht nicht, weil der Compiler an der Stelle cache.put(...)
meckert und sagt, dass ich dort nicht auf statische Elemente der Klasse
MyEnum zugreifen darf.
Ich hab das Problem zwar jetzt gelöst, in dem ich in jedem Enum-Element
den index speicher, und einen statischen Block gebaut hab der über alle
Enum-Elemente iteriert und in den cache einfüge, aber meine erste Lösung
hätte ich etwas schicker gefunden. Ich kann mir nur überhaupt nicht
erklären, wieso das so nicht geht. Ich dachte im Prinzip wird aus einer
Enum ungefähr sowas:
public class MyEnum
{
public static final MyEnum ONE = new MyEnum(1);
public static final MyEnum THREE = new MyEnum(3);
private static final Map<Integer,MyEnum> cache = new
HashMap<Integer,MyEnum>();
private MyEnum(int i)
{
cache.put(i,this);
}
}
und das nimmt der Compiler wieder wie erwartet. Kann mir also vielleicht
jemand von Euch sagen, wo mein Denkfehler liegt?
mfg
Andreas
.
- Follow-Ups:
- Re: Verständnisproblem Enums
- From: Patrick Roemer
- Re: Verständnisproblem Enums
- From: Joachim Lippold
- Re: Verständnisproblem Enums
- Prev by Date: Re: Geldbetragformatierung für Locale.US
- Next by Date: Re: Verständnisproblem Enums
- Previous by thread: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
- Next by thread: Re: Verständnisproblem Enums
- Index(es):
Relevant Pages
|