A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zl78365336 中级黑马   /  2013-11-30 11:09  /  1167 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zl78365336 于 2013-12-1 09:17 编辑

请问各位在主函数中如何调用这个枚举?
-----------------------------------
public enum Lamp {
     RED("GREEN"),GREEN("YELLOW"),YELLOW("RED");
     privateString next;
     privateLamp(String next){
           this.next =next;
      }
     public Lamp nextLamp(){
         returnLamp.valueOf(next);
     }
}

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1 淡定

查看全部评分

3 个回复

倒序浏览
在主函数里,通过类名.枚举的方式就可以使用。
每一个枚举成员就相当于雨一个对象。例如: RED("GREEN") == public final static Lamp RED=new Lamp("GREEN");
也就是说主函数使用调用枚举,就相当于创建一个枚举类的对象。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
其实枚举值就是一个特殊的匿名枚举对象(当你调用就初始化,就是对象),你得明白,RED在Lamp中就是继承或实现了Lamp的一个匿名内部类
说它特殊,特殊之处在于,它的写法和一般的匿名内部类有差别,但是实质上这RED是一个匿名内部类
你要在主函数中用:
Lamp.RED就可以了,你这样就相当于创初始化了RED
张孝祥老师说这个的时候,专门说了枚举的一般类的实现形式,再讲怎么用枚举类实现,你多看两遍找出两者的不同,会有所理解的

评分

参与人数 1黑马币 +5 收起 理由
简★零度 + 5

查看全部评分

回复 使用道具 举报
        主函数中写下以下代码,为什么会提示我有错误存在,是否要继续
但是,继续运行结果是对的,百思不得其解啊?
                   String s1 = TrafficLamp.RED.nextLamp().toString();
                String s2 = TrafficLamp.GREEN.nextLamp().toString();
                String s3 = TrafficLamp.YELLOW.nextLamp().toString();
                System.out.println(s1);
                System.out.println(s2);
                System.out.println(s3);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马