日期:2014-05-20  浏览次数:20841 次

关于枚举的一个问题
下面有两个文件:
Egg.java
package doItMyself;

public enum Egg {
// the enum constants, which "call" the constructor
jumbo(30.0),
extraLarge(27.0),
large(24.0);

Egg(double w){ //constructor
weight=w;
}

private double weight;

public double getWeight(){
return weight;
}
}

BigEgg.java
package doItMyself;

public class BigEgg {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Egg e=Egg.jumbo;
double wt=e.getWeight();
System.out.println(e+" eggs weight "+wt+" oz. per doz.");
}
}

当运行BigEgg后,出现
Exception in thread "main" java.lang.NullPointerException at doItMyself.BigEgg.main(BigEgg.java:28),为什么?

------解决方案--------------------
我的测试可以通过,可能是你代码没有编译正确吧



另外,Java中的Enum虽然有点复杂,但是我认为是很好用的东西。可以简化一些代码,而且像上述的应用中我还可以getWeight来取得这个Enum不同值所对应的属性


用final double这样没有强制性,我方法a(Egg e)则你很清楚方法的所需要的参数,而a(double e)这样你根本不可能马上知道这个e是什么意思