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

Lio*_*ion 1 java enums

以下简单的代码段使用的界面Named包含两个方法,即name()order()正在由实施enum命名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());
    }
}
Run Code Online (Sandbox Code Playgroud)

该代码无需实现该name()方法即可运行enum.怎么样?


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

Monday    = 1
Tuesday   = 2
Wednesday = 3
Thursday  = 4
Friday    = 5
Saturday  = 6
Sunday    = 7
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 8

Enum类已经有了一个name()方法.
由于此方法是final,您无法覆盖它(因为错误消息明确指出).