----------------- android培训、java培训、期待与您交流! -----------------
枚举
1,枚举存在的意义。
当要定义星期几或性别的变量,该怎么定义。假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday=0;
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时候就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这个目标。
2,用普通类模拟枚举的实现原理。
package enum_test;
//模拟枚举
public abstract class WeekDay {
private WeekDay() {
}
//把复杂的if else 语句抽象成两个匿名内部类。记住这个思想。
public final static WeekDay SUN = new WeekDay(){
@Override
public WeekDay nextDay() {
return MON;
}
};
public final static WeekDay MON = new WeekDay(){
@Override
public WeekDay nextDay() {
return SUN;
}
};
//用抽象方法定义nextDay就将大量的 if else 语句转移成了一个个独立的类。
public abstract WeekDay nextDay() ;
// if (this == SUN) {
// return MON;
// } else {
// return SUN;
// }
public String toString() {
return this == SUN ? "SUN" : "MON";
}
}
3,枚举的应用,构造方法和抽象方法。
package enum_test;
public class Enum {
public static void main(String[] args) {
WeekDay day = WeekDay.MON;
System.out.println(day.nextDay());
}
public enum Demo {
// 元素列表必须位于所有的成分之前。每个元素都是一个类。
SUN, MON, TUE, WED, THI, FRI, SAT;
// 对于枚举的构造方法只能是私有的。
// 元素列表中没有写任何参数时候,默认调用无参构造。
// 如果想调用带参构造,需要加入参数。例:SUN(1);
private Demo() {
}
private Demo(int day) {
}
}
public enum TrafficLamp{
// new子类的实例对象,调用父类的有参构造方法。
RED(30){
@Override
public TrafficLamp nextLamp() {
return GREEN;
}
},
GREEN(40){
@Override
public TrafficLamp nextLamp() {
return YELLOW;
}
},
YELLOW(5){
@Override
public TrafficLamp nextLamp() {
return RED;
}
};
// 定义一个抽象方法。方法的返回类型可以是类本身。
public abstract TrafficLamp nextLamp();
private int time ;
private TrafficLamp(int time){
this.time = time;
}
}
// 枚举只有一个成员时候,就可以作为一种单例的实现方式。
}
分享到:
相关推荐
五大基础算法——枚举,算法数据结构 枚举算法是五大基础算法之一,它是通过列举所有可能的解,然后对每个解进行判断,若符合要求则采纳这个解,不符合则抛弃。枚举算法通常用于解决无法使用其他算法解决的问题,...
Java编程语言中,枚举和反射机制是两个重要的特性,它们在不同的场景下有着独特的用途。下面我们将详细探讨这两个主题。 一、枚举 枚举(Enum)在Java中用于定义一组固定数量的值,这些值可以作为常量使用。枚举...
使用`Class.forName()`方法可以获取枚举类,`getDeclaredFields()`获取枚举的字段(即枚举值),`getEnumConstants()`则可以获取所有枚举实例。例如: ```java Class<Weekday> enumClass = Class.forName(...
枚举法是一种在解决问题时,通过尝试列举所有可能情况来找到正确答案的方法。在数学、计算机科学和逻辑推理中,枚举法常被用于解决组合问题、排列问题以及寻找特定解的问题。对于三年级的学生来说,掌握枚举法可以...
它可以接受`byte`, `short`, `int`, `char`类型的值,JDK5之后也可以处理枚举类型,JDK7开始支持`String`。`default`分支用来处理所有未匹配的case,它可以在`switch`的最后,此时`break`可以省略。每个`case`通常都...
数学广场——列表枚举.doc
Python中的枚举(Enumeration)是一种强大的工具,用于创建一组具有特定命名和有序的常量。在Python 3.4及更高版本中,枚举通过`enum`模块提供。本篇文章将深入探讨枚举的各个方面,包括其定义、作用以及如何在代码...
沪教版二年级下册《数学广场——列表枚举》数学教案.doc
本教程出自知名教育机构黑马程序员,该机构以其深入浅出的教学方式和实用的案例著称。 在本教程中,你将学习到以下关键知识点: 1. **Java环境搭建**:首先,你需要了解如何下载和安装Java Development Kit (JDK)...
from enum import Enum class Vip(Enum): GREEN=1 YELLOW=2 PURPLE=3 print(type(GREEN))#报错 print(type(Vip.GREEN))# print(type(Vip.GREEN.name))# ...print(Vip.GREEN.name)#GREEN(打印枚举的名字)(返回
4、 定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。 5、 编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段...
5. **枚举**:创建固定的常量集合,增强类型安全。 6. **泛型**:提供类型参数化,增强了代码的复用性和安全性。 以上内容涵盖了Java初学者在使用Eclipse进行编程时的基本操作和一些重要的JDK5新特性,通过熟练掌握...
在第8章“自制容器——结构体和枚举”中,我们将深入理解结构体的使用以及相关概念。 首先,结构体的使用方式如下: ```c struct 标识符{ 数据类型 1 成员 1; 数据类型 2 成员 2; … 数据类型 n 成员 n; }; ``...
在Java编程语言中,JDK的新特性之一是枚举(Enum)。枚举是一种特殊的类,它提供了一种安全的方式来表示一组固定数量的常量。在本文中,我们将深入探讨枚举类型及其在JDK中的应用。 一、枚举的定义与使用 1. 基本...
【第11章 抽奖——随机数与枚举】 在编程中,模拟抽奖系统往往涉及到随机数的生成和特定逻辑的实现。本章主要介绍了如何利用Java中的随机数类`Random`,以及如何运用枚举类型来创建更加规范化的抽奖程序。同时,还...
内容概要:本文深入介绍了Java中的两个重要特性——枚举和泛型。首先详细讲述了枚举的基本概念、枚举类型的特点及其实现方式,如枚举的成员方法、构造器以及如何将其用于高级编程场合。其次对泛型的概念进行了解释,...
枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...