Eclipse喜欢它,javac讨厌它,它是一个带有界面的枚举

bma*_*ies 11 java eclipse enums

Eclipse indigo,java 1.6

public interface I {
  String getName();
}

/* and in another file */

public enum E implements I {
  E1() {
     String getName() { return "foo"; }
  };
}
Run Code Online (Sandbox Code Playgroud)

在Eclipse中,这有效!其他类可以在类型I的引用上调用getName().实际的javac拒绝它,声称枚举中没有getName()这样的东西.这只是一个Eclipse bug吗?

请注意,对此有用的是枚举器中的方法定义.如果我做正常的事情,它在Eclipse和Javac中都可以正常工作,并且在枚举的底部定义了返回字段值的函数.

ysh*_*vit 13

getName()E1应该是public-是什么导致你的问题?否则,您尝试使用package-private方法覆盖公共方法(接口中声明的所有方法都是公共方法),这是不允许的.


Nic*_*ube 1

首先我同意@yshavit。

否则它可能与此相关:Workaround for javaccompilation order bug in maven

我认为这与名字顺序有关。尝试重命名你的接口 A,它可能会先编译并且一切应该可以工作。