Java eclipse中的枚举问题
我的eclipse IDE中存在以下错误: 在定义字段之前,无法引用该字段 我尝试使用枚举变量,它的一些值具有相同的名称Java eclipse中的枚举问题,java,enums,Java,Enums,我的eclipse IDE中存在以下错误: 在定义字段之前,无法引用该字段 我尝试使用枚举变量,它的一些值具有相同的名称 public enum Enun { A(STATIK); private static int STATIK = 1; private Enun(final int i) { } } 谁能告诉我怎么解决这个问题吗 谢谢:)是的,您不能在枚举声明中引用枚举的静态成员。如果要命名这些数字,则应使STATIK成为嵌套静态类的成员: A(Cons
public enum Enun {
A(STATIK);
private static int STATIK = 1;
private Enun(final int i) {
}
}
谁能告诉我怎么解决这个问题吗
谢谢:)是的,您不能在枚举声明中引用枚举的静态成员。如果要命名这些数字,则应使STATIK成为嵌套静态类的成员:
A(Constants.STATIK);
private static class Constants {
private static int STATIK = 1;
}
private Enun(final int i) {
}
尽管我怀疑是否需要这样做-枚举名称应该告诉您关于这些数字需要知道的所有信息,并且您不需要传统的静态声明。如果您想实现此目的,您不能在构造函数中传递STATIK,请使用类似
public enum Enun {
A(1);
private int someInt;
private Enun(final int i) {
this.someInt = i;
}
}
请记住,默认情况下enum是单例的,因此不需要对此int使用static。您不能扩展任何其他内容,因为enum已经扩展了某些内容(根据规范),但您可以使用enum实现!试试这个
public interface EnunConstants {
int STATIK = 1;
int AWESOME = 2;
int POSSUM = 3;
}
public enum Enum implements EnunConstants {
A(STATIK),
B(AWESOME),
C(POSSUM);
private int val;
private Enun(final int i) { this.val = i; }
public int getVal() { return val; }
}
public class Sergio {
public static void main(String[] args) {
Enun S = Enun.A;
System.out.println(S.getVal());
Enun P = Enun.C;
System.out.println(P.getVal());
}
}
换一种方式试试:
public enum Enun {
A(1);
private static int STATIK = A.ordinal();
private Enun(final int i) {
}
}
这有一个副作用,即现在STATIK不再是编译时常量,但这一点很重要(在switch语句中使用-但在那里你应该使用你的枚举值)。或者如果有更多像STATIK这样的值,它可能是另一个隐藏的枚举