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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ∏艾力克斯※ 中级黑马   /  2013-11-18 21:14  /  1378 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ∏艾力克斯※ 于 2013-11-19 20:47 编辑
  1. public enum TrafficLamp {
  2.                 RED {

  3.                         @Override
  4.                         public TrafficLamp nextLamp() {
  5.                                 // TODO Auto-generated method stub
  6.                                 return GREEN;
  7.                         }
  8.                 },
  9.                 GREEN {

  10.                         @Override
  11.                         public TrafficLamp nextLamp() {
  12.                                 // TODO Auto-generated method stub
  13.                                 return YELLOW;
  14.                         }
  15.                 },
  16.                 YELLOW {

  17.                         @Override
  18.                         public TrafficLamp nextLamp() {
  19.                                 // TODO Auto-generated method stub
  20.                                 return RED;
  21.                         }
  22.                 };

  23.                 // private TrafficLamp() {
  24.                 //                        
  25.                 // }

  26.                 public abstract TrafficLamp nextLamp();

  27.                 private int time;

  28.                 private TrafficLamp(int time) {
  29.                         this.time = time;
  30.                 }
  31.         }
复制代码
以上是一个错误的枚举代码,我想知道的是,为什么我写了
private TrafficLamp(int time) {
this.time = time;
}
以后,上面写好的 RED等枚举就会报错?不太明白其中的机制

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定,其实,你应该多看看视频的~.

查看全部评分

4 个回复

倒序浏览
private TrafficLamp(int time) {
this.time = time;
}
这个方法的修饰类应该定义成public吧
回复 使用道具 举报
很简单啊,这涉及到类的构造方法问题。
如果你的类中,没有定义一个构造方法,那么会默认有一个 类名()空的构造方法,如果你自己写了一个构造方法,那么默认的构造方法就没有了。
你看的你例子。你自己定义了一个私有的构造方法,然后原来默认的空参数的构造方法就没有了,但是你的枚举对象使用的是空参数的构造方法,所以就会提示你——空参数的构造方法没有被定义
解决办法:
1.要么你再添加一个空的构造方法。
2.要么,你就按照带参数的构造方法创建对象,例如:RED(20){},YELLOW(5){},GREEN(20){}

版主。。。别再给我金币了。。。。我今天刚面试完,等着1个技术分申请名额啊。。。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1 成全你!加油啊

查看全部评分

回复 使用道具 举报 1 0
spiderman 发表于 2013-11-19 10:59
很简单啊,这涉及到类的构造方法问题。
如果你的类中,没有定义一个构造方法,那么会默认有一个 类名()空 ...

看样子面试是通过了?多少分啊?
回复 使用道具 举报
陌上尘 发表于 2013-11-19 11:50
看样子面试是通过了?多少分啊?

104.6....就差一个技术分了。。。对了,我是昨天跟你说过话的那位,如果不出意外,咱们就应该是同窗了哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马