class Value {
public static Value PLUS = new Value('+');
public static Value MINUS = new Value('-');
public static Value get(char c) {
return c == '+' ? PLUS : MINUS;
}
private Value(char c) {
this.c = c;
}
private char c;
}
Value m = Value.get('+');
А вообще в новой Java enum'ы поддерживаются на уровне языка.
Поддерживаться то они поддерживаются, но вот только на сишные енамы не похожи, другой функционал... Решение данной задачи с их помощтю аналогично тому что вы написали.
Enum-ы есть в J2SE 5.0.
Вот рабочий кусочек кода:
public abstract class Comparison {
protected COMPARE_OP op;
public enum COMPARE_OP {
EQ, NEQ;
public boolean isTrue(String s1, String s2) {
switch(this) {
case EQ: return s1.equals(s2);
case NEQ: return !s1.equals(s2);
}
return false;
}
}
public Comparison(COMPARE_OP op) {
this.op = op;
}
public boolean isTrue(String s1, String s2) {
.........
return op.isTrue(s1, s2);
}
}
ИМХО можно использовать и в чисто сишном стиле.