普通Java类实现枚举类和枚举类的对比

来源:互联网 发布:生产车间仿真软件 编辑:程序博客网 时间:2024/04/27 23:20

普通Java类实现枚举:

package com.test;/** * 使用Java普通类模拟枚举类 * @author Administrator * */public abstract class EnumTest {//使用匿名内部类实现父类抽象方法public static final EnumTest RED = new EnumTest(){@Overrideprotected EnumTest nextLamp(int time) {// TODO Auto-generated method stubreturn GREEN;}};public static final EnumTest GREEN = new EnumTest(){@Overrideprotected EnumTest nextLamp(int time) {// TODO Auto-generated method stubreturn YELLOW;}};public static final EnumTest YELLOW = new EnumTest(){@Overrideprotected EnumTest nextLamp(int time) {// TODO Auto-generated method stubreturn RED;}};//构造函数必须私有化private EnumTest(){}public String toString(){return this == RED ? "RED" : (this == GREEN ? "GREEN" : "YELLOW" );}//定义抽象方法protected abstract EnumTest nextLamp(int time);}

Java自带枚举类:

package com.test;public class Test {public static void main(String[] args) {T lamp = T.RED;System.out.println(lamp.nextLamp());}//定义枚举类public enum T{RED("红") {//返回的是子类(匿名内部类)的实例对象@Overridepublic T nextLamp() {return GREEN;}},GREEN("绿") {@Overridepublic T nextLamp() {return YELLOW;}},YELLOW("黄") {@Overridepublic T nextLamp() {return RED;}};//定义对象别名private  String aliasName ;//必须私有化构造函数private T(){}private T(String aliasName){this.aliasName = aliasName;}public String toString(){return aliasName;}public abstract T nextLamp();}}


原创粉丝点击