`
kevin_wanwei
  • 浏览: 114546 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java1.5新特性枚举实现原理

 
阅读更多
package com.bp_soft.day01;
/**
 * Java1.5中新特性枚举是如何实现的
 * 下面我写一个普通类去模拟一下枚举的实现过程
 * @author kevin
 * 2010-3-8
 */
public abstract class TrafficLight {
	//在使用枚举时,定义常量实际上是当前类静态常量对象
	//(1)用普通类模拟枚举,首先该类的构造方法应该是私有的
	private int time;
	
	private TrafficLight(){};
	
	private TrafficLight(int time){
		this.time=time;
	}
	//定义RED,GREEN,YELLOW当前类的静态常量对象
	public final static TrafficLight RED=new TrafficLight(30){

		@Override
		public TrafficLight nextLight() {
			return GREEN;
		}

		@Override
		public String toString() {
			return "RED";
		}
		
	};
	
	public final static TrafficLight GREEN=new TrafficLight(45){

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

		@Override
		public String toString() {
			return "YELLOW";
		}
		
	};
	//这是通过匿名内部内来实现的
	public final static TrafficLight YELLOW=new TrafficLight(){

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

		@Override
		public String toString() {
			return "RED";
		}
		
	};
	
	//当我们在使用这个类时, 不可能再随随便便来创建其他对象,(我们只能选择上面三个对象的其中之一),这就是枚举实现思想
	public abstract String toString();
	//父类的抽象方法有子类来实现
	public abstract TrafficLight nextLight();
	
	public static void main(String args[]){
		System.out.println(RED.nextLight());
	}
}

 

package com.bp_soft.day01;
/**
 * 下面我写的一个枚举,比较一下就会知道枚举实现原理了吧
 * @author kevin
 * 2010-3-8
 */
public enum TrafficLightEnum {
	
	RED(30){
		public  TrafficLightEnum  nextLight(){
			return GREEN;
		}
		
		public  String toString(){
			return "RED";
		}
	},GREEN(45){
		public  TrafficLightEnum  nextLight(){
			return YELLOW;
		}
		
		public  String toString(){
			return "GREEN";
		}
	},YELLOW(5){
		public  TrafficLightEnum  nextLight(){
			return YELLOW;
		}
		
		public  String toString(){
			return "YELLOW";
		}
	};
	private int time; 
	
	private TrafficLightEnum(){}//在枚举中可以定义私有的构造方法
	
	private TrafficLightEnum(int time){this.time=time;}//在枚举中可以定义多个私有构造函数
	

	
	public abstract TrafficLightEnum  nextLight();
	
	public abstract String toString();
}

 

2
1
分享到:
评论

相关推荐

    java1.5新特性

    java1.5之后的新特性: 1,枚举(enum) 作用:一般用于代表一组相同类型的常用常量。 原理:语法结构与java类的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译之后实际上是...

    Java开发技术大全 电子版

    Java开发技术大全 电子版 第1篇Java基础知识入门. 第1章Java的开发运行环境2 1.1Java的运行环境与虚拟机2 1.2Java的开发环境4 1.2.1JDK的安装4 1.2.2如何设置系统环境变量6 1.2.3编译命令的使用8 1.2.4解释...

    想自己写框架?不了解Java注解(Annotation)机制可不行,来跟我一起通过源码深入Java注解机制

    它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。 在JDK中定义了许多注解,其作用大致可以分为...

    基于TCP的服务器客户端程序设计.doc

    在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进 ...

    javaSE代码实例

    5.2 Java中数组的实现机制 61 5.3 数组的初始化 63 5.3.1 默认初始化 63 5.3.2 利用循环初始化 64 5.3.3 枚举初始化 66 5.4 数组的相互赋值 67 5.4.1 基本类型数组赋值规则 67 5.4.2 引用型数组赋值...

    Hibernate实战(第2版 中文高清版)

     1.5 小结   第2章 启动项目   2.1 启动Hibernate项目   2.1.1 选择开发过程   2.1.2 建立项目   2.1.3 Hibernate配置和启动   2.1.4 运行和测试应用程序   2.2 启动Java Persistence项目   2.2.1 ...

    asp.net知识库

    运算表达式类的原理及其实现 #实现的18位身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    Java EE 框架..................................................................................................................................................................................1 ...

    spring.net中文手册在线版

    26.3.1.5.通知链 26.3.1.6.配置通知 26.3.2.使用特性定义切入点 26.4.The Spring.NET AOP Cookbook 26.4.1.缓存 26.4.2.性能监视 26.4.3.重试规则 Spring.NET AOP最佳实践 第二十七章. .NET Remoting快速入门 27.1....

    精通ANDROID 3(中文版)1/2

    1.1 面向新PC的全新平台  1.2 Android的历史  1.3 Dalvik VM剖析  1.4 理解Android软件栈  1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 Android UI  1.5.3 Android基础...

    精通Android 3 (中文版)2/2

    1.1 面向新PC的全新平台  1.2 Android的历史  1.3 Dalvik VM剖析  1.4 理解Android软件栈  1.5 使用Android SDK开发最终用户应用程序  1.5.1 Android模拟器  1.5.2 Android UI  1.5.3 Android基础...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     Ivor Horton是撰著Java、C和C++编程语言图书的杰出作家之一。大家一致认为,他的著作独具风格,无论是编程新手,还是经验丰富的编程人员,都很容易理解其内容。在个人实践中,Ivor Horton也是一名系统顾问。他从事...

Global site tag (gtag.js) - Google Analytics