此类是一个同事给我的实例,通过示例注释了一些个人理解的东西可能是错误的理解,不过为了方便记忆暂时用于此理解方式,然后在详细查询资料.
public enum EnumTrafficLamp { //每一个枚举类RED相当于一个继承了EnumTrafficLamp枚举类的子类 //EnumTrafficLamp的构造方法设定了变量RED的构造方法中才可以传参 //通过将枚举RED可以调用其他的GREEN枚举 RED (15) { public EnumTrafficLamp nextLight() { return GREEN; } }, GREEN(30) { public EnumTrafficLamp nextLight() { return YELLOW; } }, YELLOW(5) { public EnumTrafficLamp nextLight() { return RED; } }; private int time; private EnumTrafficLamp() { } private EnumTrafficLamp(int time) { this.time = time; } //这里是为了上面的枚举中可以使用方法, //相当于在EnumTrafficLamp定义了一个抽象方法 //其他枚举类因为是继承了EnumTrafficLamp类,所以 //必须实现EnumTrafficLamp类中的抽象方法nextLight() public abstract EnumTrafficLamp nextLight(); public String toString() { return name() + ":" + time; } public EnumTrafficLamp next() { if (this.name().equals("RED")) { return GREEN; } else if (this.name().equals("GREEN")) { return YELLOW; } else { return RED; } } public static void main(String[] args) { EnumTrafficLamp lamp = EnumTrafficLamp.RED; while (true) { System.out.println(lamp.next()); //lamp的对象是RED返回结果是GREEN,这样就可以通过GREEN去调用另一个 //为此获得调用循环功能 lamp = lamp.next(); } } }
public enum TestPojo { A(){ public TestPojo abc() { return B; } },B(){ public TestPojo abc() { return C; } },C(){ public TestPojo abc() { return A; } }; public abstract TestPojo abc(); public TestPojo next() { if(name().equals("A")) { return B; }else if(name().equals("B")){ return C; }else { return A; } } public static void main(String[] args) { TestPojo t=TestPojo.A; while(true){ System.out.println(t.next()); t=t.next(); } } }