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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孙天 黑马帝   /  2012-5-5 23:29  /  2166 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class TrafficLiight{
public static void main(String[] args){



TrafficLamp a=TrafficLamp.RED(30);
System.out.println(a.nextLamp());
}


public enum TrafficLamp{

RED(30){
public  TrafficLamp nextLamp(){
return GREEN;
}
},
GREEN(45){
public  TrafficLamp nextLamp(){
return YELLOW;
}
},
YELLOW(5){
public  TrafficLamp nextLamp(){
return RED;
}
};
public abstract TrafficLamp nextLamp();
public static TrafficLamp RED(int i) {
// TODO Auto-generated method stub
return null;
}
private TrafficLamp(int time){
}

}
}
运行出错了

9 个回复

倒序浏览
本帖最后由 —__ 于 2012-5-6 03:12 编辑

占用沙发~
潇洒飘过~
我也不回~
回复 使用道具 举报
哥们,既然是枚举,那是静态的,当你在程序中调用这个枚举类时,它便进行初始化RED,GREEN,YELLOW三个枚举类型已经初始化完了,接着你是调用对象了,可你调用的时候还加个时间参数,这就有问题了吧,相当于说对象再实例化!应该去掉吧,用手机上的,纠结
回复 使用道具 举报
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
回复 使用道具 举报
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
回复 使用道具 举报
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
回复 使用道具 举报
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
回复 使用道具 举报
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
回复 使用道具 举报
哥们,对不住了,这手机无限重发了,睡了,拜
回复 使用道具 举报
class TrafficLiight{
public static void main(String[] args){

                TrafficLamp a=TrafficLamp.RED(30);//枚举中以将构造函数私有化了,你认为你还可以传值吗?
                System.out.println(a.nextLamp());
                System.out.println("下一个是"+a.nextLamp()+"你需要等待"+a.getTime());
        }
        public enum TrafficLamp{

                RED(30){
                public  TrafficLamp nextLamp(){
                return GREEN;
                }
                },
                GREEN(45){
                public  TrafficLamp nextLamp(){
                return YELLOW;
                }
                },
                YELLOW(5){
                public  TrafficLamp nextLamp(){
                return RED;
                }
                };
        public abstract TrafficLamp nextLamp();
       //不明白你此处是什么意思
        //public static TrafficLamp RED(int i) {
        // TODO Auto-generated method stub
        //return null;
        //}
        //如果你想获取red的时间,你可以这样做
        public  int getTime(){
                return time;
        }
    private int time;
        //此处错误,你根本没有那个time的变量,你怎么通过构造函数初始化
        private TrafficLamp(int time){
                this.time=time;
        }
}
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马