我正在尝试使用很少的常量创建枚举。我希望枚举成为单身人士。使用下面的代码,我在eclipse中遇到编译错误:
语法错误,插入")"
完成第5行的方法声明。我无法找出错误。
public enum Days {
SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY;
INSTANCE; // line 5
public Days getInstance() {
return INSTANCE;
}
}
答案 0 :(得分:5)
在枚举声明中,;
在最后一个枚举值之后使用。
所以这里:
SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY;
INSTANCE;
这应该删除:
INSTANCE;
我希望枚举成为单身
情况已经如此,但枚举值(SUNDAY,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY
)每个都是单身。
枚举类本身不是单身,并不是为它设计的。
而不是试图以这种方式访问枚举类:
public Days getInstance() {
return INSTANCE;
}
仅使用课程:Days
答案 1 :(得分:1)
删除if (entity == null) throw new NullEntityException("null")
行,并静态访问您的枚举:INSTANCE
。
枚举并不意味着实例化,这意味着没有必要尝试让你的枚举成为单身人士。
答案 2 :(得分:1)
您的两个要求不兼容。枚举值是enum
类的实例,您需要七个这样的值。根据定义,单例类是具有单个实例的类:
Singleton::确保一个类只有一个实例,并提供对其的全局访问点。 -Design Pattern Book - Singleton
因此,从技术上讲,不可能有一个以上的值(也是单例)的枚举类型。
对于大多数使用情况,您可以简单地使用基本的枚举类型定义:
public enum Days
{ SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
将Singleton设计模式与枚举类型结合起来的唯一有意义的情况是,当一个人希望使用enum
声明来实施Singleton模式时。有关详情,请参见this post。请注意,在这种情况下,枚举中仅存在一个值,该值为INSTANCE
。
答案 3 :(得分:0)
您不能破坏ENUM varriables的声明,然后再继续。 使用逗号将INSTANCE添加到第3行,您将能够编译该程序。
周日,周一,周二,周三,周四,周五,周六,INSTANCE;