您的位置 首页 java

java枚举

1、枚举指由一组固定的常量组成合法的类型,就是一个一个列举出来。所以它一般都是表示一个有限的集合类型,用于声明一组带标识符的常数。枚举在曰常生活中很常见,例如一个人的性别只能是“男”或者“女”,一周的星期只能是 7 天中的一个等。类似这种当一个变量有几种固定可能的取值时,就可以将它定义为枚举类型。

2、枚举的要求:

1)私有化类的构造器,保证不能在类的外部创建其对象。

2)在类的内部创建枚举类的实例,并用声明为 public static final 的变量来引用。

3)对象如果有实例变量,应该声明为private final,并在 构造器 中初始化。

3、枚举的特点:

1)枚举就是一种多例设计模式。所以首先要认识枚举,需要知道多例设计模式的特点: 构造方法 私有化,类内部需要提供若干个实例化对象,后面通过statica方法返回。

2)如果出现大量if else 也可以使用枚举来代替

4、枚举的用法:

  enum  Color { RED, GREEN, BLUE }  

如果枚举不添加任何方法, 枚举值 默认为从0开始的有序数值。以 Color 枚举类型举例,它的枚举常量依次为 RED:0,GREEN:1,BLUE:2

枚举中添加新方法

 public enum Color {  
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3);  
    // 成员变量  
     private  String name;  
    private int index;  
    // 构造方法  
    private Color(String name, int index) {  
        this.name = name;  
        this.index = index;  
    }  
    // 获取name 
    public static String getName(int index) {  
        for (Color c : Color.values()) {  
            if (c.getIndex() == index) {  
                return c.name;  
            }  
        }  
        return null;  
    }  
    // get set 方法  
    public String getName() {  
        return name;  
    }  
    public  void  setName(String name) {  
        this.name = name;  
    }  
    public int getIndex() {  
        return index;  
    }  
    public void setIndex(int index) {  
        this.index = index;  
    }  
}    

5、枚举常用方法

values():以数组形式返回枚举类型的所有成员.

ordinal():获取枚举成员的索引位置,从0开始。

equals() :判断是否为同一个对象。

valueOf():将普通 字符串 转换为枚举实例。

6、枚举和常量的区别

1)枚举和常量不是一个维度的东西,枚举是对象,常量是字段。

2)常量能做的,枚举都能做,枚举能做的常量不一定能做。

3)switch语句支持枚举型,当switch使用int、 String 类型时,由于值的不稳定性会有越界的现象,对于这个的处理往往只能通过if条件筛选以及default模块来处理。而使用枚举型后,在编译期间限定类型,不允许发生越界的情况。
4)当你使用常量类时,往往得通过equals去判断两者是否相等,枚举有着严格的实例化控制,可以用 == 去做比较符。
5)常量类编译时,是直接把常量的值编译到类的 二进制 代码里,常量的值在升级中变化后,需要重新编译引用常量的类,因为里面存的是旧值。枚举类编译时,没有把常量值编译到代码里,即使常量的值发生变化,也不会影响引用常量的类。
6)枚举类编译后默认为final class,不允许继承可防止被子类修改。常量类可被继承修改、增加字段等,容易导致父类的不兼容。

不足之处请多多指教。

文章来源:智云一二三科技

文章标题:java枚举

文章地址:https://www.zhihuclub.com/185374.shtml

关于作者: 智云科技

热门文章

网站地图