Chinaunix首页 | 论坛 | 博客
  • 博客访问: 69274
  • 博文数量: 43
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-27 15:04
个人简介

记录,分享

文章分类

全部博文(43)

文章存档

2017年(24)

2015年(1)

2014年(18)

我的朋友

分类: Java

2014-06-27 16:26:55

    J2SE 1.5新增了enum关键字用来声明枚举类型。

    enum与class具有很多相似的地方:
  1. 相似的访问控制,可以实现一个或多个接口,一个java源文件内只能有一个public枚举且其名字要与源文件名相同。
  2. 用enum声明的枚举类也可以有
但enum与class也有一些不同之处:
  1. 使用enum声明的枚举类默认继承于java.lang.Enum类,而不是java.lang.Object,它实现了Serializable和Comparable接口。
  2. 枚举类的构造器只能是private的,如果忽略了访问控制符,编译器默认使用private修饰。因此,枚举类无法通过new关键字来创建对象,而只能使用 EnumName.InstanceName 的形式来得到
  3. 枚举类的所有实例必须在枚举类中显示列出,这些实例编译器会自动添加public static final来修饰,无需手动添加。如果实例形如 XXX ,则内部先调用父类Enum的构造器,再调用默认的无参构造器。如果形如 XXX("xxx"),则调用父类构造后再调用private构造器。
  4. enum可用在switch case 语句中,且case里面的常量不需要使用  EnumName.InstanceName 这种形式,可以直接写InstanceName。
    Enum类有一个valueOf静态方法,用来返回带指定名称的指定枚举类型的枚举常量,它的name参数是枚举某个实例的名字,如下例中,如果有 SeasonEnum season = Enum.valueOf(SeasonEnum.class,"spring"),则season为null,应该用"SPRING" 。Enum还提供了一个values方法,用以遍历所有的枚举值。


例子:

public enum SeasonEnum{
  SPRING("spring"),SUMMER("summer"),AUTUMN("autumn"),WINTER("winter");//use private constuctor
  private String name;
  
  private  SeasonEnum(String name){
    this.name=name;
  }
  
  public String toString(){
    return this.name;
  }
}
阅读(376) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~