Java Enum详解

来源:互联网 发布:mac 不同设备 照片分类 编辑:程序博客网 时间:2024/05/21 00:52
1、枚举(Enum) :我们所定义的每个枚举类型都继承自 java.lang.Enum 类,枚举中的每个成员默认都是 public static final 的。

2、 每个枚举的成员其实就是您定义的枚举类型的一個实例(Instance) ) 。换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举类型有几个实例,分别是什么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间就已经完全确定下来了。

3、枚举定义方式 

   1、

   public enum Color
  {
Red, White, Blue, Black
  }


 2、 

enum color
{
red,blue,white;
public static color getCom()
{
return color.blue;
}
}

3、 

enum Season
{
Spring("春"),Summer("夏"),Autumn("秋"),Winter("冬");
private String desc;
private Season(String _desc)   //注意该方法默认是private 不可定义为public 
{
this.desc = _desc;
}
public String getDesc()
{
return desc;
}
public static color getCom()
{
return color.blue;
}
}

    4、关于定义描述属性如何获取,一般都是用方法获取如3:

           return desc;即返回描述属性 。

            有人会想那么enum私有的构造方法有什么用呢? 其实是已经有的属性赋值给成员变量,让外部访问成员变量,从而方便访问属性。

     5、 关于EnumSet 和 EnumMap用法  

      1、 EnumMap的用法

       public class EnumMapDemo
    {
public static void main(String[] args)
{
Map<Action, String> map = new EnumMap<Action, String>(Action.class);


map.put(Action.TURN_RIGHT, "向右转");
map.put(Action.SHOOT, "射击");
map.put(Action.TURN_LEFT, "向左转");


for (Action action : Action.values())
{
System.out.println(map.get(action));
}
}
}


enum Action
{
TURN_LEFT, TURN_RIGHT, SHOOT;
}


2、EnumSet的用法

       EnumSet.noneOf(FontConstant.class);

       EnumSet.complementOf(enumSet)

       EnumSet.of(FontConstant.Plain);

       EnumSet.copyOf(list);

3、注意switch默认 char byte,int,char 类型,而在枚举中默认调用ordinal() ,放入null自然会报空指针异常




0 0
原创粉丝点击