`
把阳光剪成雨Java
  • 浏览: 25387 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

黑马程序员——枚举

 
阅读更多

----------------- 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期末复习——枚举与反射机制

    Java编程语言中,枚举和反射机制是两个重要的特性,它们在不同的场景下有着独特的用途。下面我们将详细探讨这两个主题。 一、枚举 枚举(Enum)在Java中用于定义一组固定数量的值,这些值可以作为常量使用。枚举...

    JDK5.0新特性(3)——枚举

    使用`Class.forName()`方法可以获取枚举类,`getDeclaredFields()`获取枚举的字段(即枚举值),`getEnumConstants()`则可以获取所有枚举实例。例如: ```java Class<Weekday> enumClass = Class.forName(...

    三年级——枚举法提高PPT学习教案.pptx

    枚举法是一种在解决问题时,通过尝试列举所有可能情况来找到正确答案的方法。在数学、计算机科学和逻辑推理中,枚举法常被用于解决组合问题、排列问题以及寻找特定解的问题。对于三年级的学生来说,掌握枚举法可以...

    黑马程序员Java基础视频辅导班Day03

    它可以接受`byte`, `short`, `int`, `char`类型的值,JDK5之后也可以处理枚举类型,JDK7开始支持`String`。`default`分支用来处理所有未匹配的case,它可以在`switch`的最后,此时`break`可以省略。每个`case`通常都...

    数学广场——列表枚举.doc

    数学广场——列表枚举.doc

    Python学习之路——枚举类

    Python中的枚举(Enumeration)是一种强大的工具,用于创建一组具有特定命名和有序的常量。在Python 3.4及更高版本中,枚举通过`enum`模块提供。本篇文章将深入探讨枚举的各个方面,包括其定义、作用以及如何在代码...

    沪教版二年级下册《数学广场——列表枚举》数学教案.doc

    沪教版二年级下册《数学广场——列表枚举》数学教案.doc

    Java基础案例教程.rar

    本教程出自知名教育机构黑马程序员,该机构以其深入浅出的教学方式和实用的案例著称。 在本教程中,你将学习到以下关键知识点: 1. **Java环境搭建**:首先,你需要了解如何下载和安装Java Development Kit (JDK)...

    Python3入门与进阶——枚举,留神关键点。

    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、 编写一个类,增加一个实例方法用于打印一条字符串。并使用反射手段...

    day17 java

    5. **枚举**:创建固定的常量集合,增强类型安全。 6. **泛型**:提供类型参数化,增强了代码的复用性和安全性。 以上内容涵盖了Java初学者在使用Eclipse进行编程时的基本操作和一些重要的JDK5新特性,通过熟练掌握...

    第8章 自制容器——结构体和枚举1

    在第8章“自制容器——结构体和枚举”中,我们将深入理解结构体的使用以及相关概念。 首先,结构体的使用方式如下: ```c struct 标识符{ 数据类型 1 成员 1; 数据类型 2 成员 2; … 数据类型 n 成员 n; }; ``...

    MLDn学习笔记 —— JDK新特性(枚举)

    在Java编程语言中,JDK的新特性之一是枚举(Enum)。枚举是一种特殊的类,它提供了一种安全的方式来表示一组固定数量的常量。在本文中,我们将深入探讨枚举类型及其在JDK中的应用。 一、枚举的定义与使用 1. 基本...

    第11章抽奖——随机数与枚举.ppt

    【第11章 抽奖——随机数与枚举】 在编程中,模拟抽奖系统往往涉及到随机数的生成和特定逻辑的实现。本章主要介绍了如何利用Java中的随机数类`Random`,以及如何运用枚举类型来创建更加规范化的抽奖程序。同时,还...

    Java编程基础教程:枚举与泛型的深入讲解

    内容概要:本文深入介绍了Java中的两个重要特性——枚举和泛型。首先详细讲述了枚举的基本概念、枚举类型的特点及其实现方式,如枚举的成员方法、构造器以及如何将其用于高级编程场合。其次对泛型的概念进行了解释,...

    java 通过反射获取枚举类,及枚举类的值,枚举类枚举实例名

    枚举(Enumeration)是Java中的一个特殊类类型,用于定义一组常量。本项目"test-enum-demo-master"显然是一个用于演示如何通过反射来操作枚举类的示例。 首先,让我们理解枚举类的基本概念。枚举类在Java中用于定义...

Global site tag (gtag.js) - Google Analytics