1.5以后的一个新特性就是枚举,在进入CSDN前的这么久我都一直用的是1.4风格的代码风格,原来自己落后这么多年了.
后来火龙果问了一个问题,问题是这样的.
要求一个方法只能传入1-10的作为参数,不然的话,就会报错,不过不能是运行时报错,应该是编译报错.
当时不是很明白,后来在看Thinking in java 的过程中,看到了这样的一个类,才恍然大悟.
我们就来看下这个类吧
class
Meal
... {
private int i;
private Meal(int newi)
...{
i=newi;
}
public int getI()
...{
return i;
}
public final Meal stweet=new Meal(1);
public final Meal meet=new Meal(2);
}
public class Eat
... {
public void Toeat(Meal meal)
...{
System.out.println(meal.getI());
}
}
... {
private int i;
private Meal(int newi)
...{
i=newi;
}
public int getI()
...{
return i;
}
public final Meal stweet=new Meal(1);
public final Meal meet=new Meal(2);
}
public class Eat
... {
public void Toeat(Meal meal)
...{
System.out.println(meal.getI());
}
}
虽然这两个类是太过粗鄙了,但是已经能够说明问题了,因为这个方法只能接受 Meal参数,但是Meal参数是不可构造的,所以我们能传的Meal参数,只有值为1或者2的Meal对象.
要满足1-10,只要扩展一下就可以了.然后我就想到了,原来这个方法其实是参考的singleton模式,只是做了一个数量上的扩展罢了
这个简单的类也就是枚举最初的原型了