以下是有效的Java代码:
enum ProductType {
CASH_BONUS {
void doSomething() {}
},
CUSTOMIZABLE {
void doSomething() {}
}
abstract void doSomething()
}
但是当我尝试在Groovy控制台中运行它时,我得到错误:
不能有一个抽象的方法 非抽象类。班级 必须声明'ProductType' 摘要或方法'无效 必须实现doSomething()'。 at line:-1,column:-1
不能有一个抽象的方法 非抽象类。班级 必须声明'ProductType' 摘要或方法'无效 doSomething()'不能是抽象的。 在行:11,列:3
我似乎记得读过Groovy(尚未)支持枚举常量的重写方法,这是正确的,如果是这样,是否有一种优雅的方式来模拟这种行为?
这是一个围绕Groovy 1.8.0修复的错误
答案 0 :(得分:4)
这是一个错误:http://jira.codehaus.org/browse/GROOVY-4641
你可以使抽象方法不抽象。抛出异常以确保始终覆盖它,如:
enum ProductType {
CASH_BONUS(1) {
void doSomething() {
}
},
CUSTOMIZABLE(2) {
void doSomething() {
}
};
ProductType(int n) {
this.n=n;
}
final int n;
void doSomething() {
throw new UnsupportedOperationException()
}
}
ProductType.CASH_BONUS.doSomething();
ProductType.CUSTOMIZABLE.doSomething();
答案 1 :(得分:0)
在为我工作的eclipse中将Groovy Compile从1.8升级到2.0
(Eclipse 3.7)