【发布时间】:2012-03-07 18:08:36
【问题描述】:
Eclipse 靛蓝,java 1.6
public interface I {
String getName();
}
/* and in another file */
public enum E implements I {
E1() {
String getName() { return "foo"; }
};
}
在 Eclipse 中,这行得通!其他类可以在类型 I 的引用上调用 getName()。实际的 javac 拒绝了它,声称枚举中没有 getName() 这样的东西。这只是一个 Eclipse 错误吗?
请注意,比较奇怪的是枚举器中的方法定义。如果我做正常的事情,它在 Eclipse 和 Javac 中都可以正常工作,并且在枚举底部定义的函数返回一个字段的值。
【问题讨论】:
-
应该允许。这个问题是相关的:stackoverflow.com/questions/2709593/… What
javacerror are you getting? -
刚刚在
Eclipse Indigo SR1中检查了这个。没有按预期编译。 -
只是好奇。是因为没有人知道 enum 可以在 Java 中实现接口,还是因为标题,所以有这么多的赞成票?我认为两者都有:)
-
直到一周前我才知道枚举常量可以有类体,当时有人提交了一个错误报告,说我的反编译器没有处理它们。如果很多人从这个问题中学到新东西,我不会感到惊讶:)。