Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux编程 > » 正文

黑马程序员----java总结之枚举类

来源: 未知 分享至:

 

 

---------------------- android培训、java培训、期待与您交流! ----------------------


 

JDK1.5新增了一个enum关键字,用来定义枚举类。枚举类其实就是一种特殊的Java类。

 

如何定义一个枚举类:

public class Twst {
 public static void main(String[] args){
   SeasonEnum summer = Enum.valueOf(SeasonEnum.class,\"SUMMER\");

 // SeasonEnum spring = SeasonEnum.SPRING;
   System.out.println(summer.ordinal());
 }
 public enum SeasonEnum{
       SPING, SUMMER, FALL,WINTER(1) ; //大写的一般是实例值。注意的是构造方法,方法等都必须写在枚举值列表后面。
        private  final String name  = \"season\";//小写的一般是属性;    
        private SeasonEnum(){System.out.println(\"无参构造方法\");}
        private SeasonEnum(int i){System.out.println(\"有参构造方法\"+name);}
  }
}

******************************************************************

运行结果: 无参构造方法
      无参构造方法
      无参构造方法
      有参构造方法season
      1

 

从运行结果来看,我们只是需要summer一个对象,但是枚举类里的所有枚举值都被执行了,也就是都被实例化了。这是为什么呢??

   

上面四个属性其实就是这个枚举类所有可能的枚举值。[季节只可能有春夏秋冬四个季节,所以我们就定义代表这四个季节的枚举值]

 

枚举类的构造器只能使用且必须使用private访问控制,private可以省略。【java的访问控制符有四个:public、protected、默认、private四个,这里我们如果不写private,并不表示访问控制符就是默认类型的,而仍然是private类型的。】。既然构造器都是私有的了,我们不可能再通过NEW关键字来创建该类的对象了。所以在定义枚举类时,一定要将所有可能用到的枚举值显示列出。

 

如果需要使用该枚举类的某个实例,可以使用枚举类名.枚举值的方式。如SessionEnum.SPRING

所有枚举类都有一个values方法。用来返回该枚举类的所有实例。SessionEnum.values();

如果在其他类中需要使用到枚举类里的某个对象,这样来写:SessionEnum session = Enum.valueOf(SessionEnum.class ,  “FALL”);

 

枚举类通常应该设计成不可变类,也就是说它的属性值不应该允许改变,这样会更安全,而且代码更加简介。所以属性就应该使用private final 修饰,这样就只需要提供get方法而不再提供set方法了。既然使用了final修饰,属性值也就不能更改了。这就要求我们必须在构造器里为这些属性定义初始值(我们也可以在类中定义属性时给定默认值,但是这种情况意义不大)。如:public enum Gender{MALE(“”),FEMALE(“”)}(构造器里有几个参数,这里就应该提供几个对应的参数。)

其实MALE)等价于public static final Gender MALE = new Gender(“”);


Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史