java 之 枚举学习示例

来源:互联网 发布:软件测试单元测试 编辑:程序博客网 时间:2024/06/05 19:13
package com.ethan.enumtest;//手工实现枚举类public abstract class WeekDay1 {//私有构造方法private WeekDay1(){};/*public final static WeekDay SUN = new WeekDay();public final static WeekDay MON = new WeekDay();*//*将if else 转为 独立的类 * public WeekDay nextDay() {if(this==SUN) {return MON;} else {return SUN;}}*/public abstract WeekDay1 nextDay();//匿名内部类,实现抽象类public final static WeekDay1 SUN = new WeekDay1() {@Overridepublic WeekDay1 nextDay() {return MON;}};public final static WeekDay1 MON = new WeekDay1() {@Overridepublic WeekDay1 nextDay() {return SUN;}};public String toString() {return this==SUN?"SUN":"MON";}}
package com.ethan.enumtest;public class EnumTest {/** * @param args */public static void main(String[] args) {WeekDay1 day = WeekDay1.SUN;System.out.println(day.nextDay());WeekDay day2 = WeekDay.FRI;System.out.println(day2.name());System.out.println(day2.ordinal());//序号 5//class com.ethan.enumtest.EnumTest$WeekDaySystem.out.println(day2.getClass());//SUN,字符串 转换为WeekDay对象System.out.println(WeekDay.valueOf("SUN"));//WeekDay[]-----7System.out.println(WeekDay.values().length);}//枚举中的元素 就是类的实例对象//带参数的构造函数public enum WeekDay {//分号可要可不要,如果后边有方法,要加上分号//只要用到WeekDay类,就会初始化构造函数,初始化下边的所有元素SUN(1),MON,TUE,WED,THI,FRI,SAT;private WeekDay() {System.out.println("WeekDay()");}private WeekDay(int day) {System.out.println("WeekDay(int day)");}}/** * 枚举只有一个成员时,就可以作为一种单例实现方式 * 私有构造方法 * instance 也不用new * @author ETHAN * */public enum TrafficLamp {//子类构造方法中,调用父类的带参构造方法RED(30) {@Overridepublic TrafficLamp nextLamp() {return GREEN;}},GREEN(45) {@Overridepublic TrafficLamp nextLamp() {return YELLOW;}},YELLOW(5) {@Overridepublic TrafficLamp nextLamp() {return RED;}};public abstract TrafficLamp nextLamp();private int time;private TrafficLamp(){}private TrafficLamp(int time) {this.time = time;}}}


原创粉丝点击