首先要明白枚举里面的每一个成员都是一个对象,我们先用普通类来实现看看
- abstract class Color{
- private int sth;
- private Color(){}
- private Color(int sth){this.sth = sth};
- public final static ColorRED= new Color(){ //这边就是用到了匿名类,并且是无参构造函数
- @Override
- public Color nextColor() {
- // TODO Auto-generated method stub
- return BLUE;
- }
-
-
- };
- public final static ColorBLUE= new Color(5){ //这边我们使用匿名类,并用有参构造器
- @Override
- public Color nextColor() {
- // TODO Auto-generated method stub
- return RED;
- }
-
- };
- public abstract Color nextColor();
复制代码
new Runnable(){
public void run(){}};像这样的写法就是新建一个实现了Runnable接口的子类对象.如果这个Runnable有有参构造器,还是可以在括号里传值的.
这个看懂了之后再去看你上面的代码,其实就是一件事了,只不过枚举里的成员帮我们封装一下,先理解下上面的例子再看看你的代码,自己理解一下,不懂再看视频 |