当前位置: 网学 > 编程文档 > JAVA > 正文

JAVA综合--如何掌握JDK1.5枚举类型

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
  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; 
  } 
  } 
  } 

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

  3.覆载(Override)toString, valueOf方法 

  前面我们已经知道enum提供了toString,valueOf等方法,很多时候我们都需要覆载默认的toString方法,那么对于enum我们怎么做呢。其实这和覆载一个普通class的toString方法没有什么区别。 

  …. 
  public String toString(){ 
  switch (this){ 
  case Red: 
   return "Color.Red"; 
  case Green: 
   return "Color.Green"; 
  case Blue: 
  

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号