Java eclipse中的枚举问题

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

我的eclipse IDE中存在以下错误:

在定义字段之前,无法引用该字段

我尝试使用枚举变量,它的一些值具有相同的名称

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这样的值,它可能是另一个隐藏的枚举