java核心技术卷上的枚举类示例代码是这样的:
enum Size{
SMALL("S"),MEDIUM("M"),LARGE("L"),EXTRA_LARGE("XL");
private String abbreviation;
private Size(String abbreviation){this.abbreviation=abbreviation;}
public String getAbbreviation(){return abbreviation;}
当时不是很理解这是为什么,知道我看了另一段代码
class Size{
private String abbreviation;
private Size(String abbreviation){this.abbreviation=abbreviation;}
public String getAbbreviation(){return abbreviation;}
public static Size SMALL = new Size("S");
public static Size MEDIUM = new Size("M");
public static Size LARGE = new Size("L");
public static Size EXTRA_LARGE = new Size("XL");
}
这两段代码的效果是相等的。
在jdk5之前并没有枚举类,这种方法相当于是用来实现枚举类的。
- 我们将构造方法设置为private,这样就不能直接new这个对象。
- 通过设置static方法,在类中构造对象。
- 这也就是为什么书上说SMALL,MEDIUM,LARGE,EXTRA_LARGE相当于类的实例。