带常量的单例枚举
问题描述:
我想用少数常量创建枚举。我想要枚举是单身。下面的代码,我得到的编译错误在日食:带常量的单例枚举
语法错误,插入“)”
完成在第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
答
您不能破坏ENUM varriables的声明,然后再继续。 用逗号将实例添加到第3行,您将能够编译该程序。
星期一,星期一,星期二,星期三,星期四,星期五,星期六,实例;
答
取出INSTANCE
线,和静态访问枚举像这样:Days.MONDAY
。
枚举并不意味着实例化,这意味着没有必要尝试使您的枚举为单例。
让我确认我的理解在这里,1.你的意思是说Enums是默认的单例,INSTANCE变量返回对单例实例的引用。 2.为每个常量创建单例实例,如SUNDAY,MONDAY等等。 –
第二点是好的,但第一个,没有。枚举类只是类。这个类提供的单个单例是由你声明的枚举值(SUNDAY,MONDAY等)表示的。 – davidxxx
如果枚举默认情况下不是单例,那么如何使它成为单例。请告知,因为我还不清楚。 –