В спецификации на Java 1.4 ver.3.0 есть пример для перечисления, который должен нормально компилироваться и работать. Компиляция не проходит, предупреждая о неизвестном методе eval в последней строчке метода main.
public enum Operation {
PLUS {
double eval(double x, double y) { return x + y; }
},
MINUS {
double eval(double x, double y) { return x - y; }
},
TIMES {
double eval(double x, double y) { return x * y; }
},
DIVIDED_BY {
double eval(double x, double y) { return x / y; }
};
public static void main(String args[]) {
double x = Double.parseDouble(args[0]);
double y = Double.parseDouble(args[1]);
for (Operation op : Operation.values())
System.out.println(x + " " + op + " " + y + " = " +
op.eval(x, y));
}
} ---
Если бы не компилятор, пример интерпретируемый и абсолютно рабочий, в чем можно убедиться закомментировав выражение 'op.eval(x, y)', поставив точку останова на последнем операторе метода 'main' и добавив выражение op.eval(x,y) в окне 'Watch' отладчика.
|