原文出处: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&js=1&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.
分享到:
相关推荐
1. **自定义方法和属性**:可以在枚举类型中定义方法和属性,就像在普通的类中一样。 2. **实现接口**:枚举类型可以实现接口,这样就可以利用接口提供的方法。 3. **构造器**:虽然不能公开,但枚举类型可以有私有...
在Java中,枚举由关键字`enum`定义,具有以下特点: 1. 枚举类默认继承自`java.lang.Enum`类,而不是直接继承`Object`类。`Enum`类实现了`Serializable`和`Comparable`接口,这意味着枚举类型可以被序列化,并且...
### Java中的关键字大全 在Java编程语言中,关键字是一组预定义的词汇,它们具有特殊的含义和用途。...以上列举了Java中的关键字及其基本用途。了解并熟练掌握这些关键字有助于提高编程效率和代码质量。
开发者可以根据这些信息快速查找所需的功能,理解API的使用方法,从而提高开发效率。 总之,掌握Java JDK中文API对于Java开发者来说至关重要,它不仅提供了丰富的类库,还通过详细的文档帮助开发者理解和运用这些...
在本文中,我们将深入探讨Java枚举的定义、使用方法以及它如何改善传统使用`static final`常量的模式。 首先,让我们看看传统的`static final`常量表示枚举的方式。例如,清单1展示了如何使用`public static final`...
- **增删改查**:列举 HashMap 中进行添加、删除、修改和查询操作的方法。 - **迭代操作**:介绍如何遍历 HashMap 中的键值对。 - **并发考虑**:讨论在并发环境中使用 HashMap 时需要注意的问题。 #### 13. Java ...
5. **状态机的使用**:在应用程序中,我们可以创建状态机实例,初始化为起始状态,然后根据需要触发事件,从而驱动状态机的运行。 ```java FiniteStateMachine fsm = new FiniteStateMachine(); fsm.currentState =...
1. **泛型**:Java 6正式引入了泛型,允许在类、接口和方法中使用类型参数,提高了代码的类型安全性和可读性。泛型可以防止在集合操作中出现ClassCastException,并提供了编译时的类型检查。 2. **自动装箱与拆箱**...
当一个函数或方法被调用时,程序会执行该函数或方法中定义的操作。 #### 15. Circumstance (事件, 环境, 状况) - **拼音**: ['sә:kәmstәns] - **解释**: “Circumstance”通常表示一种情况或情境。在编程上下...
本章节主要介绍了在Java编程中使用常数设置和列举型态(enum)的概念及其应用。常数设置是程序中用于表示固定不变的值,通常用静态final关键字来声明,以便在多个类之间共享。而列举型态是Java中一种特殊的类,用于...
本文档系统列举了Java的关键字及其用法分类,总共分为以下几个类别:访问控制、类、变量修饰符、流程控制、数据类型、异常处理、包和变量引用、运算符等。 访问控制 * public:公共的,所有类都可以访问。 * ...
- **列举**:Java中有51个关键字,例如: - `abstract`、`assert`、`boolean`、`break`、`byte`、`case`、`catch`、`char`、`class`、`const`、`continue`、`default`、`do`、`double`、`else`、`enum`、`extends`...
文档中列举了大量的代码片段和类名,这些信息对于理解Java开发中各个层次的职责、设计模式、异常处理机制、服务与DAO层的操作方法等方面是十分重要的。 根据以上知识点,可以推测文档是Java项目的开发文档,可能...
- `switch`语句不能直接作用于`byte`、`long`或`String`,但在Java 7以后,可以使用`enum`,Java 14以后引入了`switch`表达式,支持`String`类型。 2. **数据类型与操作** - `short s1 = 1; s1 = s1 + 1;`有错,...
1. **定义**:在Java中,标识符用于命名类、变量、方法等。例如: ```java class Hello { int water; } ``` 注意:大小写字母被视为不同的标识符,即`Hello`与`hello`表示两个不同的名称。 2. **组成规则**:...
这份文档详细地介绍了Java平台标准版(Java SE)中的各种类库、接口、方法以及它们的使用方式,帮助开发者理解并有效地利用Java API进行编程。 在JDK API中文文档中,我们可以找到以下主要的知识点: 1. **包...
在Java中,枚举类型继承自java.lang.Enum类,它是一种特殊类型的类,具有类的所有特性,但又有其特殊的限制。这些限制使得枚举类型比普通的类类型更加简洁和安全。枚举常用于表示一组有限的、离散的、明确的量,如...
### 编程常用英语知识点详解 #### 一、基本概念与关键字 1. **Abstract (抽象)**:在Java中,`...以上列举的词汇是编程尤其是Java编程中常见的英语术语及其含义。掌握这些术语对于理解和编写高质量的代码至关重要。