background image

四、枚举:
  枚举的是在 Java 1.5SE 中开始支持的,以下为 Java 枚举的基本概念和应用技巧:
  1. 所有的 enum 对象均是由 class 对象作为底层支持的,该对象继承自 JDK 中的
Enum,但是该底层类确实 final 类,既不能再被其他的类继承。
  2. 枚举的出现完全替代了原有的"public static final"常量表示法,枚举以一种更加合理、
优雅和安全的方式替换了原有的方案。其最基本的声明方式如下:
1     public enum Color {
2         RED, BLUE, BLACK, YELLOW
3     }
  3. Enum 中构造函数的原型为 protected Enum(String name, int ordinal),自定义的枚举
对象会将自身的名字以字符串的形式,同时将自己在整个常量从声明的顺序作为超类构
造函数的两个参数传给超类并由超类完成必要的初始化,如: RED 枚举常量将调用
super("RED",0)。
  4. 枚举中可以定义构造函数、域方法和域字段,但是枚举中的构造器必须是私有
(private)的,如果自定义枚举中有了自定义的构造函数,那么每个枚举常量在声明时必须
按照自定义构造函数的规则传入参数。枚举对象的构造函数只是在枚举常量对象声明的时
刻才调用一次,之后再也不能像普通对象那样通过 new 的方法创建,见如下代码:
1     public enum Size {
2         SMALL(0.8),
3         MEDIUM(1.0),
4         LARGE(1.2);
5         double pricingFactor;
6         private Size(double p) {
7           pricingFactor = p;
8         }
9     }
  注:枚举常量列表必须写在最前面声明,否则编译器报错。
  5. 可以给自定义枚举添加域方法,见如下代码:
1     public enum Size { 
2         SMALL(0.8), 
3         MEDIUM(1.0), 
4         LARGE(1.2); 
5         private double pricingFactor; 
6         Size(double p) { 
7             pricingFactor = p; 
8         } 
9         public double getPricingFactor() {
10             return pricingFactor;
11         }
12     }
  6. 枚举中常用域方法:
1     public enum Size{ 
2         SMALL, 
3         MEDIUM,