一、模拟枚举的实现原理之交通灯
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枚举类型提供了一种安全、类型安全的方式来定义和使用常量,它可以拥有构造器、方法和字段,并能与switch语句、序列化、反射等Java特性很好地结合。理解并熟练使用枚举,能够使代码更加清晰、易读,...
本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举类型在Java中的引入标志着一种更为类型安全且灵活的编程方式。 #### 二、Java枚举的基本概念 Java中的枚举是一种特殊的类,用于定义...
### Java中的“枚举类型”知识点详解 #### 一、引言 在Java编程语言中,枚举(Enum)作为一种特殊的类,其设计初衷是为了更好地处理一组固定不变的常量集合。相较于传统的使用`static final`字段来表示常量的做法...
Java枚举类型是Java语言中的一种特殊的类,用于定义一组固定的常量集合。它在Java中扮演着重要的角色,提供了一种安全、类型化的常量表示方式,比传统的final static变量更具有优势。理解Java枚举类型对于编写高质量...
在Java 5(也被称为Tiger)版本中引入,枚举类型极大地提高了代码的可读性、类型安全性和维护性。在本文中,我们将深入探讨Java枚举的定义、使用方法以及它如何改善传统使用`static final`常量的模式。 首先,让...
在Java中,枚举类型不是简单的常量数组,而是一种完整的类,具有类的所有特性,如方法、构造函数和继承。下面将详细探讨`Enum`的基本概念、用法以及一些高级特性。 首先,枚举类型`Enum`的定义方式如下: ```java ...
### Java 5 新特性详解 #### 一、引言 随着技术的发展,编程语言也在不断地进步和完善。Java 5 的发布标志着 Java 在功能性和便利性方面迈出了重要的一步。本篇文章将详细介绍 Java 5 中的一些关键特性,这些新特性...
Java手动方式创建枚举类是一种常见的编程方法,在Java中可以使用枚举类型来定义一组具有相同特征的常量。通过手动方式创建枚举类,可以更好地控制枚举类型的行为和特性。在本文中,我们将通过一个实例来介绍Java手动...
本资源"Java源码查看枚举类型定义.rar"包含了关于Java枚举类型的详细解释和实例,旨在帮助开发者深入理解这一特性。 首先,枚举类型在Java中通过关键字`enum`声明。例如: ```java public enum Color { RED, ...
Java 枚举类型是编程语言中的一个重要特性,它允许我们定义一组固定的、不可变的类实例,这些实例通常表示特定的常量或状态。在Java中,枚举类型提供了许多强大的功能,使得代码更加安全、易读且易于维护。下面我们...
### JAVA中的枚举类型2:高级特性 #### 概述 枚举类型是Java语言中一个非常实用且灵活的功能。通常情况下,我们将其用于表示一组固定的常量集合,如一周中的几天、颜色选项等。然而,Java中的枚举类型远不止于此。...
- **自动实现接口**:枚举类型会自动实现`java.lang.Enum<E>`接口,其中`E`是枚举类型的名称。 - **安全性**:枚举类型的成员是固定的,不允许外部添加或修改成员。 - **单例模式**:每个枚举成员都是单例的,只能被...
### Java 5新特性 #### 1. **泛型(Generics)** 泛型是Java 5最重要的特性之一,它允许在类、接口和方法声明中使用类型参数,增强了类型安全,减少了强制类型转换,提高了代码的可读性和可维护性。 #### 2. **...
以下将详细阐述Java 5泛型的新特性: 1. **类型参数化**:泛型允许我们在类、接口和方法中定义类型参数。例如,`List<E>`中的`E`就是一个类型参数,代表某种未知的类型。当我们实例化列表时,可以指定`E`的具体类型...
在这里,`Color`是枚举类型,`RED`, `GREEN`, `BLUE`是枚举的实例,它们默认继承自`java.lang.Enum`类。 2. 访问枚举实例: 你可以通过枚举类型直接访问其实例,例如: ```java Color color = Color.RED; ``` 3. ...
JAVA 1.5的新特性是Java发展史上的一个重要里程碑,这一版本引入了一系列创新特性,旨在提升编程效率、增强代码安全性并简化开发流程。以下是对JAVA 1.5新特性的详细解析: ### 1. 泛型 (Generics) #### 概述 泛型...
Java中的枚举类型是一种强大的特性,它提供了一种类型安全的方式来表示一组固定的常量。枚举类型可以包含字段、方法和构造器,使得它们可以携带额外的信息和行为。此外,枚举类型可以实现接口,提供了额外的灵活性。...
在Java 5中,枚举类型作为一种新特性被引入,主要用于定义一组固定的、相关的常量集合。通过枚举类型,我们可以更加清晰地组织并限制程序中可用的常量选项,从而提高代码的可读性和可维护性。 例如,在文档中提到的...
在Java编程语言中,为了能够把基本数据...总之,Java的包装类为基本数据类型提供了面向对象的特性,大大增强了Java语言的灵活性和功能。通过熟悉和掌握包装类提供的方法和特性,可以在开发中更加高效地使用Java语言。