`
JavaLike
  • 浏览: 30413 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Java中Enum列举的用法

阅读更多

原文出处:http://blog.csdn.net/DL88250/archive/2007/08/11/1738281.aspx

 

Enum是enumeration(列举)的简写形式,包含在java.lang包中.熟悉C, C++, C<!-- 正文页网画中画广告 -->

<script src="http://ad.ccw.com.cn/adshow.asp?positionID=35&amp;js=1&amp;innerJs=1" type="text/javascript"></script>
<!-- <SCRIPT LANGUAGE="JavaScript1.1" SRC="http://ad.ccw.com.cn/adshow.asp?positionID=35&js=1&innerJs=1"></SCRIPT> -->

#, 或 Pasca l人应该对列举有所了解,先看个例子:

public enum Season { winter, spring, summer, fall }

 

一个enum是定义一组值的对象,它可以包括零个或多个值成员.它是属于enum类型的,一个enum对象中不可有两个或多个相同的属性或值.在次之前的java程序员一般是 用接口的方法实现列举的,如 :

public interface Season {

   static winter = 0;

   static spring = 1; //etc..

}

引入了enum的java的列举的编写方便了许多,只须定义一个enum型的对象.enum对象的值都回自动获得一个数字值,从0开始,依次递增.看一个比较简单的enum实现的例子:

EnumDemo.java

package net.javagarage.enums;



/*

We can loop over the values we put into the enum

using the values() method.

Note that the enum Seasons is compiled into a

separate unit, called EnumDemo$Seasons.class

*/

public class EnumDemo {



      /*declare the enum and add values to it. note that, like in C#, we don't use a ; to

 end this statement and we use commas to separate the values */



      private enum Seasons { winter, spring,

       summer, fall }



      //list the values

      public static void main(String[] args) {

            for (Seasons s : Seasons.values()){

                  System.out.println(s);

            }

      }



}
运行上述代码你回得到 以下结果:

winter

spring

summer

fall

Enum的属性调用:

下面的代码展示了调用enum对象的方法,这也是它通常的用法:

package net.javagarage.enums;

/*

File: EnumSwitch.java

Purpose: show how to switch against the values in an enum.

*/



public class EnumSwitch {



      private enum Color { red, blue, green }



      //list the values

      public static void main(String[] args) {

            //refer to the qualifie d value

            doIt(Color.red);



      }



      /*note that you switch against the UNQUALIFIED name. that is, "case Color.red:" is a

 compiler error */



      private static void doIt(Color c){



      switch (c) {

      case red: 

            System.out.println("value is " + Color.red);

            break;

      case green: 

            System.out.println("value is " + Color.green);

            break;

      case blue: 

            System.out.println("value is : " + Color.blue);

            break;

      default : 

            System.out.println("default");

      }

      }
}

为enums添加属性和方法

enums也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静态的属性或方法,这一切都象你在一般的类中做的那样.

package net.javagarage.enums;



/*

File: EnumDemo.java

Purpose: show how to use an enum that also defines its own fields and methods

*/



public class EnumWithMethods {



//declare the enum and add values to it.



public enum Season {



      winter, spring, summer, fall;



      private final static String location = "Phoenix";



      public static Season getBest(){

            if (location.equals("Phoenix"))

                  return winter;

            else

                  return summer;



      }



      public static void main(String[] args) {



      System.out.println(Season.getBest());

      }

}

就是这么的简单.但是有一点是需要注意的,那就是enums的值列表必须紧跟在enum声明,不然编译时将会出错.

Enums构造函数:

和类一样enums也可以有自己的构造函数,如下:

package net.javagarage.enums;



public class EnumConstructor {



      public static void main(String[] a) {



            //call our enum using the values method

            for (Temp t : Temp.values())

                  System.out.println(t + " is : " + t.getValue());

      }



      //make the enum

      public enum Temp {

            absoluteZero(-459), freezing(32),

            boiling(212), pap erBurns(451);



      //constructor here

      Temp(int value) {

            this.value = value;

      }



      //regular field?but make it final,

      //since that is the point, to make constants

      private final int value;



      //regular get method

      public int getValue() {

      return value;

      }



      }

}
输出结果是:

absoluteZero is : -459

freezing is : 32

boiling is : 212

paperBurns is : 451

尽管enums有这么多的属性,但并不是用的越多越好,如果那样还不如直接用类来的直接.enums的优势在定义int最终变量仅当这些值有一定特殊含义时.但是如果你需要的是一个类,就定义一个类,而不是enum. 

分享到:
评论

相关推荐

    列举java 枚举相关信息

    1. **自定义方法和属性**:可以在枚举类型中定义方法和属性,就像在普通的类中一样。 2. **实现接口**:枚举类型可以实现接口,这样就可以利用接口提供的方法。 3. **构造器**:虽然不能公开,但枚举类型可以有私有...

    java中枚举的详细使用介绍

    在Java中,枚举由关键字`enum`定义,具有以下特点: 1. 枚举类默认继承自`java.lang.Enum`类,而不是直接继承`Object`类。`Enum`类实现了`Serializable`和`Comparable`接口,这意味着枚举类型可以被序列化,并且...

    java中的关键字大全

    ### Java中的关键字大全 在Java编程语言中,关键字是一组预定义的词汇,它们具有特殊的含义和用途。...以上列举了Java中的关键字及其基本用途。了解并熟练掌握这些关键字有助于提高编程效率和代码质量。

    JAVA JDK中文API

    开发者可以根据这些信息快速查找所需的功能,理解API的使用方法,从而提高开发效率。 总之,掌握Java JDK中文API对于Java开发者来说至关重要,它不仅提供了丰富的类库,还通过详细的文档帮助开发者理解和运用这些...

    Java枚举类型.pdf

    在本文中,我们将深入探讨Java枚举的定义、使用方法以及它如何改善传统使用`static final`常量的模式。 首先,让我们看看传统的`static final`常量表示枚举的方式。例如,清单1展示了如何使用`public static final`...

    90个高质量的java问答.pdf

    - **增删改查**:列举 HashMap 中进行添加、删除、修改和查询操作的方法。 - **迭代操作**:介绍如何遍历 HashMap 中的键值对。 - **并发考虑**:讨论在并发环境中使用 HashMap 时需要注意的问题。 #### 13. Java ...

    基于java实现的有限状态自动机,轻松,快捷,高效的关联状态的扭转.zip

    5. **状态机的使用**:在应用程序中,我们可以创建状态机实例,初始化为起始状态,然后根据需要触发事件,从而驱动状态机的运行。 ```java FiniteStateMachine fsm = new FiniteStateMachine(); fsm.currentState =...

    Java.API文档中文版1.60

    1. **泛型**:Java 6正式引入了泛型,允许在类、接口和方法中使用类型参数,提高了代码的类型安全性和可读性。泛型可以防止在集合操作中出现ClassCastException,并提供了编译时的类型检查。 2. **自动装箱与拆箱**...

    java_编程常用英语单词_解释.pdf

    当一个函数或方法被调用时,程序会执行该函数或方法中定义的操作。 #### 15. Circumstance (事件, 环境, 状况) - **拼音**: ['sә:kәmstәns] - **解释**: “Circumstance”通常表示一种情况或情境。在编程上下...

    第11章.ppt————电子版_ppt版

    本章节主要介绍了在Java编程中使用常数设置和列举型态(enum)的概念及其应用。常数设置是程序中用于表示固定不变的值,通常用静态final关键字来声明,以便在多个类之间共享。而列举型态是Java中一种特殊的类,用于...

    JAVA关键字列表

    本文档系统列举了Java的关键字及其用法分类,总共分为以下几个类别:访问控制、类、变量修饰符、流程控制、数据类型、异常处理、包和变量引用、运算符等。 访问控制 * public:公共的,所有类都可以访问。 * ...

    java基础的经典题目

    - **列举**:Java中有51个关键字,例如: - `abstract`、`assert`、`boolean`、`break`、`byte`、`case`、`catch`、`char`、`class`、`const`、`continue`、`default`、`do`、`double`、`else`、`enum`、`extends`...

    java开发文档.pdf

    文档中列举了大量的代码片段和类名,这些信息对于理解Java开发中各个层次的职责、设计模式、异常处理机制、服务与DAO层的操作方法等方面是十分重要的。 根据以上知识点,可以推测文档是Java项目的开发文档,可能...

    java面试宝典

    - `switch`语句不能直接作用于`byte`、`long`或`String`,但在Java 7以后,可以使用`enum`,Java 14以后引入了`switch`表达式,支持`String`类型。 2. **数据类型与操作** - `short s1 = 1; s1 = s1 + 1;`有错,...

    Java入门基础零基础学习

    1. **定义**:在Java中,标识符用于命名类、变量、方法等。例如: ```java class Hello { int water; } ``` 注意:大小写字母被视为不同的标识符,即`Hello`与`hello`表示两个不同的名称。 2. **组成规则**:...

    JDK API中文文档

    这份文档详细地介绍了Java平台标准版(Java SE)中的各种类库、接口、方法以及它们的使用方式,帮助开发者理解并有效地利用Java API进行编程。 在JDK API中文文档中,我们可以找到以下主要的知识点: 1. **包...

    第11章 枚举_注解_内部类.pdf

    在Java中,枚举类型继承自java.lang.Enum类,它是一种特殊类型的类,具有类的所有特性,但又有其特殊的限制。这些限制使得枚举类型比普通的类类型更加简洁和安全。枚举常用于表示一组有限的、离散的、明确的量,如...

    编程常用英语:(手摘)

    ### 编程常用英语知识点详解 #### 一、基本概念与关键字 1. **Abstract (抽象)**:在Java中,`...以上列举的词汇是编程尤其是Java编程中常见的英语术语及其含义。掌握这些术语对于理解和编写高质量的代码至关重要。

Global site tag (gtag.js) - Google Analytics