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自然会报空指针异常