【发布时间】:2013-04-19 12:35:27
【问题描述】:
请问我的问题是两个,非常简单
按原样误解枚举
这个想法在我的代码中遗漏了一些重要的抽象
代码示例,其中oprt.calc(x, y) 不可编译,带有警告cannot find symbol
public enum Operation {
PLUS {
public double calc(double x, double y) {
return x + y;
}
},
MINUS {
public double calc(double x, double y) {
return x - y;
}
},
MULTILPLE {
public double calc(double x, double y) {
return x * y;
}
},
DIVIDED_BY {
public double calc(double x, double y) {
return x / y;
}
};
public static void main(String args[]) {
double x = 15.25;
double y = 24.50;
for (Operation oprt : Operation.values()) {
System.out.println(x + " " + oprt + " "
+ y + " = " + oprt.calc(x, y));
}
}
}
【问题讨论】:
-
附带说明,这听起来像是 Lambda 表达式的完美应用,Java 8 的一个即将推出的功能。docs.oracle.com/javase/tutorial/java/javaOO/…
-
将其加载到 Eclipse 时收到的错误消息是
The method calc(double, double) is undefined for the type Operation,它指向下面其他人提供的解决方案。 -
+1 我不知道枚举有这样的东西。
-
@JJPA,它们也可以有实例变量和构造函数。 docs.oracle.com/javase/tutorial/java/javaOO/enum.html
-
@ColinD 感谢您的链接