黑马程序员技术交流社区
标题:
求思路,求指导
[打印本页]
作者:
孙天
时间:
2012-5-5 23:29
标题:
求思路,求指导
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){
}
}
}
运行出错了
作者:
—__
时间:
2012-5-5 23:51
本帖最后由 —__ 于 2012-5-6 03:12 编辑
占用沙发~
潇洒飘过~
我也不回~
作者:
徐慧书
时间:
2012-5-5 23:58
哥们,既然是枚举,那是静态的,当你在程序中调用这个枚举类时,它便进行初始化RED,GREEN,YELLOW三个枚举类型已经初始化完了,接着你是调用对象了,可你调用的时候还加个时间参数,这就有问题了吧,相当于说对象再实例化!应该去掉吧,用手机上的,纠结
作者:
徐慧书
时间:
2012-5-6 00:07
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
作者:
徐慧书
时间:
2012-5-6 00:08
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
作者:
徐慧书
时间:
2012-5-6 00:09
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
作者:
徐慧书
时间:
2012-5-6 00:11
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
作者:
徐慧书
时间:
2012-5-6 00:13
楼上的,这就是你的不清楚了,那些写法都是正确的。逗号那是分割三个静态对象,而逗号前面的大括号是重写了父类的方法所用,这里的RED已经不再是这个枚举类型,而是它的匿名子类的对象!而后面的大括号也刚好,一个是这个程序的类的,一个是枚举这个内部类的,其他的就是对应方法的咯,希望你能明白!多看视频吧
作者:
徐慧书
时间:
2012-5-6 00:17
哥们,对不住了,这手机无限重发了,睡了,拜
作者:
何阳
时间:
2012-5-6 00:26
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;
}
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2