作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一般来说,我了解到 Java 类中的 static
block /初始化在编译期间首先执行。但是尝试访问 enum
中的静态字段给我错误
Cannot refer to the static enum field
ExportToReports.Animal.num
within an initializer.
静态变量必须已经初始化,为什么会出现这个错误?
public enum Animal{
cat(2), dog(3);
int id, number;
static int num = 5;
Animal(int id)
{
this.id = id;
this.number = Animal.num;
}
}
那么这是否意味着当涉及到枚举静态 block 时不会首先执行?请解释
最佳答案
一个简单的解决方法是将静态字段放在静态内部类中:
enum Foo{
RED,GREEN,BLUE;
private final int value;
private Foo(){
this.value = ++ Bar.heresMyStaticField;
}
static class Bar{
private static int heresMyStaticField;
}
}
您是否应该这样做是一个完全不同的问题。
关于java - 访问枚举中的静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20118537/
我是一名优秀的程序员,十分优秀!