JDK 新特性之枚举(enum):
枚举就是要某个类型的变量的取值只能是几个固定值中的某一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制程序中填写的非法值,普通变量的方式无法实现这一目标;
枚举的实现:
package learn;
/**
* 枚举
* @author hui
*/
public class EnumTest {
public static void main(String[] args) {
WeekDay weekDay=WeekDay.SUN;//自己定义的类型WeekDay
System.out.println(weekDay.nextDay().toString());
}
}
在上面的类中,自己定义了一个类型WeekDay,建立一个自己的枚举类WeekDay_1;
package learn;
public class WeekDay_1 {
/* 这个类必须要有一个私有的构造 */
private WeekDay_1(){};
public static final WeekDay_1 SUN = new WeekDay_1() ;//星期天
public static final WeekDay_1 MON = new WeekDay_1() ;//星期一
public static final WeekDay_1 TUS = new WeekDay_1() ;//星期二
public static final WeekDay_1 WEN = new WeekDay_1() ;//星期三
public static final WeekDay_1 THUR = new WeekDay_1() ;//星期四
public static final WeekDay_1 FRI = new WeekDay_1() ;//星期五
public static final WeekDay_1 SAT = new WeekDay_1() ;//星期六
/*
* 他有一个方法,返回下一天
* */
public WeekDay_1 nextDay(){
if (this==SUN) { return MON; } else
if(this==MON){ return TUS; }else if(this==TUS){ return WEN; }else
if(this==WEN){ return THUR; }else if(this==THUR){ return FRI; }else
if(this==FRI){ return SAT; }else { return SUN; }
}
/**
* 重写toString()方法
*/
public String toString(){
if (this == SUN) {
return "Sunday";
} else if (this == MON) {
return "Monday";
} else if (this == TUS) {
return "Tuesday";
} else if (this == WEN) {
return "Wednesday";
} else if (this == THUR) {
return "Thursday";
} else if (this == FRI) {
return "Friday";
} else {
return "Saturday";
}
}
}
上面的方法,如果因为if..else..太过繁琐,可以写成:
package learn;
public abstract class WeekDay {
private WeekDay() {
}
//使用内部类的方式来实现nextDay
public static final WeekDay SUN = new WeekDay() {
@Override
public WeekDay nextDay() {
return MON;
}
};
public static final WeekDay MON = new WeekDay() {
@Override
public WeekDay nextDay() {
return TUS;
}
};
public static final WeekDay TUS = new WeekDay() {
@Override
public WeekDay nextDay() {
return WEN;
}
};
public static final WeekDay WEN = new WeekDay() {
@Override
public WeekDay nextDay() {
return THUR;
}
};
public static final WeekDay THUR = new WeekDay() {
@Override
public WeekDay nextDay() {
return FRI;
}
};
public static final WeekDay FRI = new WeekDay() {
@Override
public WeekDay nextDay() {
return SAT;
}
};
public static final WeekDay SAT = new WeekDay() {
@Override
public WeekDay nextDay() {
return SUN;
}
};
/*
* public WeekDay nextDay(){ if (this==SUN) { return MON; } else
* if(this==MON){ return TUS; }else if(this==TUS){ return WEN; }else
* if(this==WEN){ return THUR; }else if(this==THUR){ return FRI; }else
* if(this==FRI){ return SAT; }else { return SUN; } }
*/
public abstract WeekDay nextDay();
public String toString() {
if (this == SUN) {
return "Sunday";
} else if (this == MON) {
return "Monday";
} else if (this == TUS) {
return "Tuesday";
} else if (this == WEN) {
return "Wednesday";
} else if (this == THUR) {
return "Thursday";
} else if (this == FRI) {
return "Friday";
} else {
return "Saturday";
}
}
}
使用JDK自带的枚举:
package learn;
/**
* 枚举
* @author hui
*
*/
public class EnumTest {
public static void main(String[] args) {
WeekDay weekDay=WeekDay.SUN;
System.out.println(weekDay.nextDay().toString());
WeekDay_2 weekDay2=WeekDay_2.MON;
System.out.println(weekDay2.name());//返回当前对象的名字
System.out.println(weekDay2.toString());//返回当前对象的toString
System.out.println(weekDay2.ordinal());//返回当前对象的排序
}
/**
* 枚举
* @author hui
*
*/
public enum WeekDay_2{
SUN,MON,TUS,WEN,THUR,FRI,SAT;//各个值之间用逗号隔开
}
}
分享到:
相关推荐
在本实例代码中,我们将探讨枚举的基本用法和特性。 首先,枚举的定义方式如下: ```java public enum Color { RED, GREEN, BLUE } ``` 在这个例子中,`Color` 是一个枚举类型,`RED`, `GREEN`, `BLUE` 是该枚举...
枚举类型在Java中被引入,主要用于解决常量集合并提供一种强类型的安全性,防止了无意间创建新的实例或修改枚举常量。这篇博客将深入探讨Java枚举的特性和使用方法,包括`EnumSet`和`EnumMap`这两个与枚举相关的数据...
枚举的特性: 1. 枚举的本质是 java.lang.Enum 的子类。 2. 枚举是一种特殊的类,因为被修饰为 final,所以不能继承其他类。 3. 枚举值本质上是静态常量,定义的枚举值会被默认修饰为 public static final。 4. ...
Java高新技术——Java 5的枚举(Enum)基本应用...通过使用枚举,开发者可以更好地管理常量,防止类型错误,并利用`switch`语句等特性来编写更清晰的代码。在实际开发中,熟练掌握枚举的应用是提高代码质量的关键之一。
java1.5新特性 枚举 问我文字大于20个字没问题吧?我曰:没问题,然后我凑了20个字~
本资源"Java源码查看枚举类型定义.rar"包含了关于Java枚举类型的详细解释和实例,旨在帮助开发者深入理解这一特性。 首先,枚举类型在Java中通过关键字`enum`声明。例如: ```java public enum Color { RED, ...
Java中的枚举(enum)类型是在JDK 1.5版本引入的一个强大的特性,它用于定义一组相关的常量。在C/C++等语言中,枚举通常用来表示一组具有固定值的常量集合,但在Java中,枚举不仅限于此,它提供了更多的功能和灵活性...
本篇文章将深入探讨Java枚举的特性、用法以及如何在实际开发中充分利用它们。 一、枚举的基本用法 1. 声明枚举类型: ```java public enum Color { RED, GREEN, BLUE } ``` 在这里,`Color`是枚举类型,`RED`, `...
Java手动方式创建枚举类示例 Java手动方式创建枚举类是一种常见的编程方法,在Java中可以使用枚举类型来定义一组具有相同特征的常量。通过手动方式创建枚举类,可以更好地控制枚举类型的行为和特性。在本文中,我们...
总结来说,Java枚举类型提供了一种安全、类型安全的方式来定义和使用常量,它可以拥有构造器、方法和字段,并能与switch语句、序列化、反射等Java特性很好地结合。理解并熟练使用枚举,能够使代码更加清晰、易读,...
Enum 枚举类型是 Java 5 中引入的一种新特性,旨在解决传统的 int 枚举常量的缺陷。 1. 枚举语法 在 Java 中,枚举类型是用 enum 关键字来定义的。枚举元素列表必须写在枚举类的最前面,每个元素之间用逗号隔开,...
Java 7 引入了一些新特性,如带资源的try语句、多捕获等,增强了语言的功能性和易用性。 #### Java 7 新特性 - **带资源的try语句**:简化了资源管理,自动关闭try块内的资源。 - **多捕获**:在一个catch块中捕获...
以下是Java中枚举类型的一些关键特性和使用方式: 1. **类型安全**: - Java枚举确保了类型安全,因为枚举值只能是预先定义的实例。尝试将非枚举类型的值赋给枚举变量会导致编译错误。例如: ```java public ...
枚举类型(enum)是 Java SE 5.0 引入的新特性,用于替代传统的单例类或者常量类来定义一组固定数量的值。相较于简单的常量定义或类的静态常量实例,枚举具有以下优势: 1. **类型安全**:枚举类型的实例只能是预定...
Java语言的不断发展带来了许多新特性,使得编程更加高效和安全。以下是这些特性的详细说明: 1. **自动装箱、拆箱**: 自动装箱是指将基本数据类型自动转换为对应的包装类对象,而拆箱则是将包装类对象转换回基本...
在Java编程语言中,JDK的新特性之一是枚举(Enum)。枚举是一种特殊的类,它提供了一种安全的方式来表示一组固定数量的常量。在本文中,我们将深入探讨枚举类型及其在JDK中的应用。 一、枚举的定义与使用 1. 基本...
Java枚举是面向对象编程中的一个重要特性,它用于定义固定的常量集合,这些常量通常代表某种特定的数据类型。在Java中,枚举提供了一种更安全、更规范的方式来处理常量,相比于传统的final static变量,枚举具有更多...
本文将深入探讨Java枚举类型的特性和用法,并通过具体实例说明其优势所在。枚举类型在Java中的引入标志着一种更为类型安全且灵活的编程方式。 #### 二、Java枚举的基本概念 Java中的枚举是一种特殊的类,用于定义...
### JAVA中的枚举类型2:高级特性 #### 概述 枚举类型是Java语言中一个非常实用且灵活的功能。通常情况下,我们将其用于表示一组固定的常量集合,如一周中的几天、颜色选项等。然而,Java中的枚举类型远不止于此。...
在Java中,枚举类型不是简单的常量数组,而是一种完整的类,具有类的所有特性,如方法、构造函数和继承。下面将详细探讨`Enum`的基本概念、用法以及一些高级特性。 首先,枚举类型`Enum`的定义方式如下: ```java ...