我偶然发现了一个非常奇怪的错误,我无法解释它为什么会发生.想象一下以下枚举:
import java.awt.Color;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println(MyEnum.CONSTANT1.get());
System.out.println(MyEnum.CONSTANT2.get());
}
private enum MyEnum {
CONSTANT1(staticMethod1()),
CONSTANT2(staticMethod2());
private static final Color WHY_AM_I_NULL = new Color(255, 255, 255);
private final Color color;
private MyEnum(Color color) {
this.color = color;
}
public Color get() {
return color;
}
private static Color staticMethod1() {
return new Color(100, 100, 100);
}
private static Color staticMethod2() {
return WHY_AM_I_NULL;
}
}
}
Run Code Online (Sandbox Code Playgroud)
运行它时的结果是:
java.awt.Color[r=100,g=100,b=100]
null
Run Code Online (Sandbox Code Playgroud)
问题是,为什么第二个是空的?
修改: 如果你把WHY_AM_I_NULL放在枚举中的私有静态类中,那么它首先被初始化.
| 归档时间: |
|
| 查看次数: |
5428 次 |
| 最近记录: |