`
1enny
  • 浏览: 71235 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java5的枚举讲解

 
阅读更多
13.用普通类模拟枚举的实现原理   
  1.私有的构造方法    
  2.每个元素分别用一个公有的静态成员变量表示  
  3.可以有若干个公有方法或者抽象方法,通过不同的实现定义出不同的对象。   
       示例代码:
package java_5;

public abstract class WeekDay {
    private WeekDay() {
    }

    public final static WeekDay MON = new WeekDay() {

          @Override
          public WeekDay preDay() {
              return SUM ;
         }

    };
    public final static WeekDay WEN = new WeekDay() {

          @Override
          public WeekDay preDay() {
              return MON ;
         }
    };
    public final static WeekDay THUR = new WeekDay() {

          @Override
          public WeekDay preDay() {
              // TODO Auto-generated method stub
              return WEN ;
         }
    };
    public final static WeekDay FRI = new WeekDay() {

          @Override
          public WeekDay preDay() {
              return THUR ;
         }
    };
    public final static WeekDay STAR = new WeekDay() {

          @Override
          public WeekDay preDay() {
              return FRI ;
         }
    };
    public final static WeekDay SUM = new WeekDay() {

          @Override
          public WeekDay preDay() {
              return STAR ;
         }
    };

    public abstract WeekDay preDay();

    public WeekDay nextDay() {
          if (this == MON) {
              return WEN ;
         } else if (this == WEN) {
              return THUR ;
         } else if (this == THUR) {
              return FRI ;
         } else if (this == FRI) {
              return STAR ;
         } else if (this == STAR) {
              return SUM ;
         } else {
              return MON ;
         }
    }
}

package java_5;

public class EnumTest {

    public static void main(String[] args) {
         WeekDay weekDay =  WeekDay.MON;
         System. out.println(weekDay.preDay());
         System. out.println(weekDay.nextDay());
    }
}

14.java5的枚举的基本应用15.实现带有构造方法的枚举
16.实现带有抽象方法的枚举
package java_5;

public class EnumTest {
    
    public enum TransLight {
          //枚举元素必须位于枚举体中的最开始的部分,枚举元素用;号与其他成员分开
          YELLOW {

              @Override
              public TransLight nextLight() {
                  return RED ;
             }

         }, //这个可以理解为创建该类的子类对象,在构造函数中调用了父类待参数的构造方法
          //假如枚举中只有一个成员,就可以作为一个单例的实现方式(构造私有,对象一个)
          GREEN(30) {

              @Override
              public TransLight nextLight() {
                  return YELLOW ;
             }

         },
          RED(45) {

              @Override
              public TransLight nextLight() {
                  return GREEN ;
             }
         };
          //枚举可以定义构造方法,成员。构造方法必须私有
          private int time;
         
          private TransLight(int time) {
              this.time = time;
         }
          private TransLight() {
              this.time = 100;
         }

          public abstract TransLight nextLight();

          public void getNam() {
              this.toString();
         }
    }

    public enum Weekday {
          MON, WEN (3), THUR(4), FRI(5), STAR (6), SUN(7);
          private Weekday() {
         }

          private int aa ;

          private Weekday(int aa1) {
              this.aa = aa1;
             System. out.println(aa );
         }
    }

    public static void main(String[] args) {
          method1();
        System. out.println("" .getClass().getSuperclass());
    }

    public static void method2() {
         WeekDay weekDay = WeekDay. MON;
         System. out.println(weekDay.preDay());
         System. out.println(weekDay.nextDay());
    }

    public static void method1() {
         Weekday weekday = Weekday. MON;
        System. out.println(weekday.compareTo(Weekday.WEN));// 比较两个对象的ordinal
         System. out.println(weekday.ordinal());// 找出该对象的在枚举中的位置
        System. out.println(weekday.getDeclaringClass());// 找到声明的类
         System. out.println(weekday.getClass());// 找到当前运行的的类的字节码对象
        System. out.println(weekday.getClass().getSuperclass());// 找到当前运行的的类的父类字节码对象
        System. out.println(Weekday.valueOf( "MON").toString());// 把字符串映射为枚举中的一个对象(静态)
        System. out.println(Weekday.values(). length);// 把枚举中的每个对象封装成一个数组(静态)
    }
}




分享到:
评论

相关推荐

    JAVA_枚举讲解

    一个详细讲解JAVA_枚举的例子 希望可以帮助到你。

    Java枚举类型编程(enumeration)

    java枚举类型详细讲解,自己撰写的一本电子书,编写得很详细

    枚举完整讲解实例

    Java进阶知识 内容很详细 一看就懂 值得一学

    全面解读Java中的枚举类型enum的使用

    主要介绍了Java中的枚举类型enum的使用,开始之前先讲解了枚举的用处,然后还举了枚举在操作数据库时的实例,需要的朋友可以参考下

    JAVA5.0新特性讲解与例子

    JAVA5.0新特性讲解与例子 泛型 枚举等

    浅析Java编程中枚举类型的定义与使用

    主要介绍了Java编程中枚举类型的定义与使用,简单讲解了enum关键字与枚举类的用法,需要的朋友可以参考下

    MLDN魔乐JAVA_84枚举

    Java面向对象的基础核心知识点之一,是日后学习JavaEE,JavaME的必备知识;注重基础的代码实例讲解, 让你轻松的学习Java基础知识,为以后学习铺平道路,打好基础;万丈高楼平地起,希望能帮助你!

    Java开发详解.zip

    000000_【课程介绍 —— 写在前面的话】_Java学习概述笔记.pdf 010101_【第1章:JAVA概述及开发环境搭建】_JAVA发展概述笔记.pdf 010102_【第1章:JAVA...050101_〖开发实例〗_Java开发实例讲解(人员管理)笔记.pdf

    Java核心编程技术源码

    《Java高手真经(编程基础卷):Java核心编程技术》详细讲解了Java语言基础开发中的各种技术,主要内容包括如下。Java开发入门:JDK、JVM、Eclipse、Linux。Java语法基础:类、抽象类、接口、内部类、匿名类、异常、...

    LearnJava:了解Java

    学习Java 了解有关JAVA for ME的信息! 指数 进阶主题 :ArrayList的差异之间的VS矢量 :可比较与比较器之间的区别 ...ThreadStatesEnum.java :枚举类型정리및枚举类型 JavaEnumExample.java :

    JAVA各章节的PPT.zip

    第2章之+Java语言基础第3-2章++数组与枚举第7章+内部类和异常第13章++Java多线程第13章++Java多线程第7章+内部类和异常第8章++系统常用类第4章++类与对象等各章PPT

    清华妹子的Java仓库(进阶学习路线)

    Java基础:包括枚举、范型、引用、动态代理的方式; JNA:演示了JNA的基本用法,使用Java调用C++代码。 博客目录 Java基础 Java基础学习(1)——引用 Java基础学习(2)——注解 Java基础学习(3)——泛型 Java基础学习...

    JAVA 枚举相关知识汇总

    主要介绍了JAVA 枚举相关知识,文中讲解的非常详细,代码帮助大家更好的参考和学习,感兴趣的朋友可以了解下

    Java程序设计PPT详解

    本书讲解Java程序设计知识及其编程方法,包括Java语言的基础语法、结构化程序设计、面向对象程序设计、数组、字符串、向量、哈希表、泛型、枚举、异常处理、文件和数据流、图形用户界面设计、小应用程序、线程、编程...

    JAVA 7 程序设计.part1.rar

    它以最新的Java 7为基础,全面讲解了Java编程语言、Java面向对象技术和Java核心类库三大主题,包含大量案例,是系统学习Java 7程序设计的Bible级著作。本书是Java SE 7程序设计全面、系统的教程,涵盖Java编程语言、...

    JAVA学习手册CHM版

    第2篇为核心篇,包括字符串处理、集合类、使用异常处理机制、掌握Java的I/O技术、精通多线程技术、枚举与泛型;第3篇为高级篇,包括Swing基础知识、JDBC技术、Swing高级组件、GUI事件处理机制、网络程序设计;第4篇...

    java编程教程doc

    本书分为5 部分 ,每部分关注 Java 开发环境的不同方面 。 第 I部分是对 Java 语言的深入辅导 。该部分从基础知识开始讲解,包括数据类型、运算 符、控制语旬以及类等 。然后本部分介绍继承 、包、接口 、异常处理...

    一文搞懂JAVA 枚举(enum)

    主要介绍了JAVA 枚举(enum)的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

Global site tag (gtag.js) - Google Analytics