带常量的单例枚举

问题描述:

我想用少数常量创建枚举。我想要枚举是单身。下面的代码,我得到的编译错误在日食:带常量的单例枚举

语法错误,插入“)”

完成在第5行的方法声明我无法找出什么是错。

public enum Days { 

     SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY; 

     INSTANCE; // line 5 

     public Days getInstance() { 
     return INSTANCE; 
    } 
} 

在枚举声明中,;在最后一个枚举值之后使用。

所以在这里:

SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY; 
INSTANCE; 

这应该被删除:

INSTANCE; 

我想枚举是单

这已经是这样了,但对于枚举值(SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY)其中每一个都是单身人士。

枚举类本身不是一个单例,并不是为了它而设计的。

,而不是试图访问这样的枚举类:

public Days getInstance() { 
    return INSTANCE; 
} 

中只使用了类:Days

+0

让我确认我的理解在这里,1.你的意思是说Enums是默认的单例,INSTANCE变量返回对单例实例的引用。 2.为每个常量创建单例实例,如SUNDAY,MONDAY等等。 –

+0

第二点是好的,但第一个,没有。枚举类只是类。这个类提供的单个单例是由你声明的枚举值(SUNDAY,MONDAY等)表示的。 – davidxxx

+0

如果枚举默认情况下不是单例,那么如何使它成为单例。请告知,因为我还不清楚。 –

您不能破坏ENUM varriables的声明,然后再继续。 用逗号将实例添加到第3行,您将能够编译该程序。

星期一,星期一,星期二,星期三,星期四,星期五,星期六,实例;

取出INSTANCE线,和静态访问枚举像这样:Days.MONDAY

枚举并不意味着实例化,这意味着没有必要尝试使您的枚举为单例。