实际上是调用了枚举类的无参构造,而枚举里是可以有抽象方法的,那么生成枚举对象的话,抽象方法必须被覆盖,这样就要写大括号了。贴一个我之前的代码。。也是获取下一个灯的。- public class Test2 {
- public static void main(String[] args) {
- System.out.println("测试方法演示:");
- //设置当前灯为红灯
- Lamp currentLamp = Lamp.RED;
- int i = 1;
- //循环输出三次,测试下一个灯的方法是否正常
- while(i<4){
- System.out.println(currentLamp+"的下一个灯是"+(currentLamp=currentLamp.getNextLamp()));
- i++;
- }
- }
- }
- //定义的交通灯枚举
- enum Lamp{
- //包含红灯、绿灯、黄灯,三个元素。
- RED(){
- public String toString() {
- return "红灯";
- }
- public Lamp getNextLamp() {
- return GREEN;
- }
- },GREEN(){
- public String toString() {
- return "绿灯";
- }
- public Lamp getNextLamp() {
- return YELLOW;
- }
- },YELLOW(){
- public String toString() {
- return "黄灯";
- }
- public Lamp getNextLamp() {
- return RED;
- }
- };
- //覆盖toString方法,方便测试打印
- @Override
- public abstract String toString();
- //获取下个灯的方法
- public abstract Lamp getNextLamp();
- }
复制代码 |