- 若是要定义一个枚举类:
public enum Size { SAMLL, MEDIUM, LARGE, EXTRA, EXTRA_LARGE};
- 实际上,这个声明定义的类型是一个类,它恰好有4个实例,在此尽可能不要构造新对象。
- 所以,在比较两个枚举类型的值时,永远不须要调用equals,而直接使用“==”就能够了。
- 若是须要的话,能够在枚举类型中添加一些构造器、方法和域。固然,构造器知识在构造枚举常量的时候被调用。下面是一个示例:
public enum Size
{
SMALL("S"), MEDIUM("M"), LARGE("L"),EXTRA_LARGE("XL");
private String abbreviation;
private Size(String abbreviation) {this.abbreviation = abbreviation;}
public String getAbbrevation() {return abbrevation;}
}
- 全部的枚举类型都是Enum类的子类。它们继承了这个类的许多方法,其中最有用的一个是toString,这个方法可以返回枚举常量名。例如,Size.SMALL.toString()将返回字符串"SMALL".
toString的逆方法是静态方法valueOf。例如,语句:
Size s = Enum.valueOf(Size.class, "SMALL");
将s设置为Size.SMALL.数组
- 每一个枚举类型都有一个静态的value方法,它将返回一个包含所有枚举值的数组,并且该数组中的元素严格保持其在enum中声明的顺序,所以你能够在循环中使用values返回的数组。例如,以下调用:
Size[] values = Size.values();
返回包含元素Size.SMALL, Size.MEDIUM,Size.LARGE和Size.EXTRA_LARGE的数组。this
- ordinal方法返回enum声明中枚举常量的位置,位置从0开始计数。例如,Size.MEDIUM.ordinal()返回1.
- 能够向enum中添加方法。若是打算定义本身的方法,那么必须在enum序列化的最后添加一个分号。同时,Java要求你必须先定义enum实例。若是在定义enum实例以前定义了任何方法或属性,那么在编译时就会获得错误。
- enum中构造器与普通方法没有什么区别,由于有少量限制以外,enum就是普通的类。因此,咱们可使用enum作许多事情。
- 通常将enum的构造器声明为private,但对于它的访问属性而言,并无什么实质性的变化,由于(即便不声明为private)咱们只能在enum定义的内部使用期构造器建立enum实例。一旦enum定义结束,编译器就不容许咱们在使用其构造器来建立任何实例楽