当前位置:首页 > 全部子站 > IT > 思科认证

JDK1.5新特性:枚举类型

来源:长理培训发布时间:2017-12-13 14:09:47

   Enum的最简单形式,即类似于

  public enum Color {

  Red,

  Green,

  Blue;

  }

  Enum是Sun全新引进的一个关键字,看起来很象是特殊的class,它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。在声明一个enum类型时,应该注意到enum类型有如下的一些特征

  1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例;

  2.所有枚举值都是public , static , final的。(注意:这一点只是针对于枚举值,我们可以和在普通类里面定义变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。);

  3.Enum默认实现了java.lang.Comparable接口;

  4.Enum重载了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串"Blue";

  5.Enum提供了一个valueOf方法,它和toString方法是相对应的。调用valueOf("Blue")将返回Color.Blue。因此在重写toString方法的时候就要注意到这一点,一般来说应该相对应地重写valueOf方法;

  6.Enum还提供了values方法,该方法可以方便的遍历所有的枚举值;

  7.Enum还有一个oridinal的方法,该方法返回枚举值在枚举类中的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

  了解了这些基本特性,我们来看看如何使用它们。

  1.遍历所有有枚举值. 知道了有values方法,我们可以轻车熟路地用ForEach循环来遍历了枚举值了。

  for (Color c: Color.values())

  System.out.println("find value:" + c);

  2.在enum中定义方法和变量,比如我们可以为Color增加一个方法随机返回一个颜色。

  public enum Color {

  Red,

  Green,

  Blue;

  /*

  *定义一个变量表示枚举值的数目。

  *(我有点奇怪为什么sun没有给enum直接提供一个size方法).

  */

  private static int number = Color.values().length ;

  /**

  * 随机返回一个枚举值

  @return a random enum value.

  */

  public static Color getRandomColor(){

  long random = System.currentTimeMillis() % number;

  switch ((int) random){

  case 0:

  return Color.Red;

  case 1:

  return Color.Green;

  case 2:

  return Color.Blue;

  default : return Color.Red;

  }

  }

  }

  可以看出这在枚举类型里定义变量和方法和在普通类里面定义方法和变量没有什么区别。唯一要注意的只是变量和方法定义必须放在所有枚举值定义的后面,否则编译器会给出一个错误。

责编:罗莉

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部