предложение как @ Джон, но более ... специфический
EDIT: Я добавил некоторые из методов Enum обеспечивает для вас. Надеюсь, что поможет ...
public class Day /* extends Enum */ {
public static final Day MONDAY = new Day("MONDAY", 0);
public static final Day TUESDAY = new Day("TUESDAY", 1);
private static final Day[] values = { MONDAY, TUESDAY };
private static final Map<String, Day> valueOfMap = new HashMap();
public static Day[] values() { return values.clone(); }
public static Day valueOf(String name) {
Day day = valueOfmap.get(name);
if(day == null) throw new IllegalArgumentException(name);
return day;
}
private final String name;
private final int ordinal;
private Day(String name, int ordinal) {
this.name = name;
this.ordinal = ordinal;
valueOfMap.put(name, this);
}
public String name() { return name; }
public int ordinal() { return ordinal; }
public String toString() { return name; }
}
public class Other {
Day day = Day.MONDAY;
}
Возможно, это не так, как это реализовано, но как вы могли его реализовать.
@ Джон: в перечислениях, кажется, что мы делаем Константы х = Constants.FOO – TimeToCodeTheRoad
@TimeToCodeTheRoad: Это просто потому, что тип переменной происходит с тем же как тип, используемый для получения значения. Представьте себе, если String имеет постоянное поле EMPTY - было бы замечательно написать 'String x = String.EMPTY', не так ли? –
@Jon: Кажется, что сообщение Питера очень точно. Это сообщение после твоего – TimeToCodeTheRoad