Java中的Enum不允许在其实现接口中实现方法

时间:2011-12-23 01:26:42

标签: java enums

以下简单的代码段使用包含两个方法Namedname()的接口order(),该方法由名为enum的{​​{1}}实现。 Days不允许实现其实现接口的enum Days方法。这样做会导致编译时错误,虽然name()没有实现name()方法,但它不会发出任何错误。

enum

代码无法在package enumpkg; interface Named { public String name(); public int order(); } enum Days implements Named { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday; public int order() { return ordinal()+1; } } final public class Main { public static void main(String[] args) { System.out.println("Monday = "+Days.Monday.order()); System.out.println("Tuesday = "+Days.Tuesday.order()); System.out.println("Wednesday = "+Days.Wednesday.order()); System.out.println("Thursday = "+Days.Thursday.order()); System.out.println("Friday = "+Days.Friday.order()); System.out.println("Saturday = "+Days.Saturday.order()); System.out.println("Sunday = "+Days.Sunday.order()); } } 中实施name()方法。怎么样?


输出非常明显,如下所示。

enum

2 个答案:

答案 0 :(得分:8)

基础Enum课程已有name() method 由于此方法为final,因此您无法覆盖它(因为错误消息明确指出)。

答案 1 :(得分:3)

在Java API中,name()定义为:

public final String name()

因此,name()存在于所有枚举中,并且不可覆盖。

另请参阅:Java API for enum