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

java5新特性枚举类型

阅读更多

一、模拟枚举的实现原理之交通灯

     1、定义一个抽象的类TrafficLamp.java

public abstract class TrafficLamp {
	private TrafficLamp(){};
               //定义一个让子类实现去的抽象方法
	public abstract TrafficLamp nextLamp();
	/*红灯,使用匿名类,消除了if语句**/
	public final static TrafficLamp RED = new TrafficLamp(){
		@Override
		public TrafficLamp nextLamp() {
			return GREEN;
		}
	};
	/*绿灯**/
	public final static TrafficLamp GREEN = new TrafficLamp(){
		@Override
		public TrafficLamp nextLamp() {
			return YELLOW;
		}
	};
	/*黄灯**/
	public final static TrafficLamp YELLOW = new TrafficLamp(){
		@Override
		public TrafficLamp nextLamp() {
			return RED;
		}
	};
                /**为了方便打印,重写toString方法*/
	@Override
	public String toString() {
		String retVal;
		if(this==RED){
			retVal= "RED";
		}else if(this==GREEN){
			retVal = "GREEN";
		}else{
			retVal="YELLOW";
		}
		return retVal;
	};
}

 

    2、测试类TrafficLampTest.java

public class TrafficLampTest {
	public static void main(String[] args) {
		TrafficLamp lamp1 = TrafficLamp.GREEN;
		TrafficLamp lamp2 = TrafficLamp.RED;
		TrafficLamp lamp3 = TrafficLamp.YELLOW;
		System.out.println(lamp1.nextLamp());
		System.out.println(lamp2.nextLamp());
		System.out.println(lamp3.nextLamp());
	}

}

 

 

二、枚举的基本使用之交通灯

   1、定义一个抽象的类TrafficLamp.java

public enum TrafficLamp {
	RED(30){
		public TrafficLamp nextLamp(){return GREEN;}
		},
	GREEN(45){
		public TrafficLamp nextLamp(){return YELLOW;}
		},
	YELLOW(45){
		public TrafficLamp nextLamp(){return RED;}
		};
	public abstract TrafficLamp nextLamp();//抽象方法让子类去实现
	private TrafficLamp() {}
	private int time;//灯亮的时间
	//只供内部调用构造方法
	private TrafficLamp(int time){this.time=time;}
	public int getTime() {
		return time;
	}
}

   2、测试类TrafficLampTest.java

public class TrafficLampTest {

	public static void main(String[] args) {
		TrafficLamp lamp1 = TrafficLamp.GREEN;
		System.out.println(lamp1);
		System.out.println(lamp1.name());
		System.out.println(lamp1.toString());
		System.out.println(lamp1.getTime());
		System.out.println(lamp1.nextLamp());
	}

}

 3、知识点剖析

    当使用"enum"义 枚举类型时,实质上定义出來的类型继承自java.lang.Enum 类型,而每个枚举的成员其实就是您定义的枚举类型的一個实例(Instance).他们都被预设为public final类型,所以您无法改变他们,他们也是 static 成員,所以您可以通过类型名称直接使用他们.

    既然继承了Enum类,所以就可以使用它里面的部分方法,如:name()方法 ,返回此枚举常量的名称.Enum类重写了toString方法,返回的也是枚举常量的名称.其他方法的使用也很简单,具体用法可参考api文档.

 

三、使用场合

 作用:某一种事物(对象)提前定义好一组规定的数据,保证填写值合法,不超出规定的数据范围之内.如:定义性别,用户类型等成员变量时,可以封装成一个枚举类型的成员变量,方便使用.

四、总结

 枚举类型是一种特殊的类,所以它里面也可以定义属性、方法。但构造方法一定要私有化!因为枚举类里面的成员都是static类型的,所以枚举类可以作为一种单例的实现方式.

分享到:
评论

相关推荐

    Java枚举类型Enum的用法

    总结来说,Java枚举类型提供了一种安全、类型安全的方式来定义和使用常量,它可以拥有构造器、方法和字段,并能与switch语句、序列化、反射等Java特性很好地结合。理解并熟练使用枚举,能够使代码更加清晰、易读,...

    java枚举类型说明

    本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举类型在Java中的引入标志着一种更为类型安全且灵活的编程方式。 #### 二、Java枚举的基本概念 Java中的枚举是一种特殊的类,用于定义...

    Java中的“枚举类型

    ### Java中的“枚举类型”知识点详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法...

    理解java枚举类型

    Java枚举类型是Java语言中的一种特殊的类,用于定义一组固定的常量集合。它在Java中扮演着重要的角色,提供了一种安全、类型化的常量表示方式,比传统的final static变量更具有优势。理解Java枚举类型对于编写高质量...

    Java枚举类型.pdf

    在Java 5(也被称为Tiger)版本中引入,枚举类型极大地提高了代码的可读性、类型安全性和维护性。在本文中,我们将深入探讨Java枚举的定义、使用方法以及它如何改善传统使用`static final`常量的模式。 首先,让...

    Java中的枚举类型Enum示例源代码

    在Java中,枚举类型不是简单的常量数组,而是一种完整的类,具有类的所有特性,如方法、构造函数和继承。下面将详细探讨`Enum`的基本概念、用法以及一些高级特性。 首先,枚举类型`Enum`的定义方式如下: ```java ...

    Java5新特性

    ### Java 5 新特性详解 #### 一、引言 随着技术的发展,编程语言也在不断地进步和完善。Java 5 的发布标志着 Java 在功能性和便利性方面迈出了重要的一步。本篇文章将详细介绍 Java 5 中的一些关键特性,这些新特性...

    Java手动方式创建枚举类示例

    Java手动方式创建枚举类是一种常见的编程方法,在Java中可以使用枚举类型来定义一组具有相同特征的常量。通过手动方式创建枚举类,可以更好地控制枚举类型的行为和特性。在本文中,我们将通过一个实例来介绍Java手动...

    Java源码查看枚举类型定义.rar

    本资源"Java源码查看枚举类型定义.rar"包含了关于Java枚举类型的详细解释和实例,旨在帮助开发者深入理解这一特性。 首先,枚举类型在Java中通过关键字`enum`声明。例如: ```java public enum Color { RED, ...

    JAVA枚举类型的用法详解

    Java 枚举类型是编程语言中的一个重要特性,它允许我们定义一组固定的、不可变的类实例,这些实例通常表示特定的常量或状态。在Java中,枚举类型提供了许多强大的功能,使得代码更加安全、易读且易于维护。下面我们...

    JAVA中的枚举类型2:高级特性.doc

    ### JAVA中的枚举类型2:高级特性 #### 概述 枚举类型是Java语言中一个非常实用且灵活的功能。通常情况下,我们将其用于表示一组固定的常量集合,如一周中的几天、颜色选项等。然而,Java中的枚举类型远不止于此。...

    java枚举类型优秀源代码

    - **自动实现接口**:枚举类型会自动实现`java.lang.Enum<E>`接口,其中`E`是枚举类型的名称。 - **安全性**:枚举类型的成员是固定的,不允许外部添加或修改成员。 - **单例模式**:每个枚举成员都是单例的,只能被...

    JAVA5/JAVA6新特性

    ### Java 5新特性 #### 1. **泛型(Generics)** 泛型是Java 5最重要的特性之一,它允许在类、接口和方法声明中使用类型参数,增强了类型安全,减少了强制类型转换,提高了代码的可读性和可维护性。 #### 2. **...

    java5泛型新特性 pdf

    以下将详细阐述Java 5泛型的新特性: 1. **类型参数化**:泛型允许我们在类、接口和方法中定义类型参数。例如,`List<E>`中的`E`就是一个类型参数,代表某种未知的类型。当我们实例化列表时,可以指定`E`的具体类型...

    高阶Java-Java枚举类型 enum 应用详解

    在这里,`Color`是枚举类型,`RED`, `GREEN`, `BLUE`是枚举的实例,它们默认继承自`java.lang.Enum`类。 2. 访问枚举实例: 你可以通过枚举类型直接访问其实例,例如: ```java Color color = Color.RED; ``` 3. ...

    JAVA1.5新特性

    JAVA 1.5的新特性是Java发展史上的一个重要里程碑,这一版本引入了一系列创新特性,旨在提升编程效率、增强代码安全性并简化开发流程。以下是对JAVA 1.5新特性的详细解析: ### 1. 泛型 (Generics) #### 概述 泛型...

    JAVA中的枚举类型1:基本用法.doc

    在Java 5中,枚举类型作为一种新特性被引入,主要用于定义一组固定的、相关的常量集合。通过枚举类型,我们可以更加清晰地组织并限制程序中可用的常量选项,从而提高代码的可读性和可维护性。 例如,在文档中提到的...

    Java常用类和枚举类型.pdf

    在Java编程语言中,为了能够把基本数据...总之,Java的包装类为基本数据类型提供了面向对象的特性,大大增强了Java语言的灵活性和功能。通过熟悉和掌握包装类提供的方法和特性,可以在开发中更加高效地使用Java语言。

Global site tag (gtag.js) - Google Analytics