java - 使用枚举中定义的静态字段作为构造函数中的参数

标签 java constructor enums

我有一个枚举并且想使用一个静态值作为构造函数中的参数。

public enum Enum
{
    e1(0),
    e2(1),
    e3(SPECIAL_VALUE);

    static int SPECIAL_VALUE = -1;

    int value;

    private Enum(int value)
    {
        this.value = value;
    }
}

在这个例子中,SPECIAL_VALUE 在初始化之前被访问,所以这显然是行不通的。我想知道是否有一个共同的解决方案。或者我不需要这样做的原因。

注意:某处可能有重复项,但我能找到的所有内容都与在构造函数主体中使用静态字段有关,而不是作为参数,而且我认为那里提供的解决方案不适用.

最佳答案

package test;

public enum Enum
{

    e1(0),
    e2(1),
    e3(SPECIAL_VALUE());

    static int SPECIAL_VALUE(){return -1;}

    int value;

    private Enum(int value)
    {
        this.value = value;
    }
    public int getValue()
    {
        return value;
    }

    public static void main(String args[])
    {
        System.out.println(e3.name());
        System.out.println(e3.getValue());
    }
}

第一次尝试ideone,瞧! http://ideone.com/Bz1N69

关于java - 使用枚举中定义的静态字段作为构造函数中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25331328/

相关文章:

java - Java中的ConcurrentHashMap原子写入后能否实现对可变数据的读取?

java - Java 中的指针、 vector 和迭代器

java - Android Gradle如何与调试库链接

javascript - 原型(prototype)上的 getter 和 setter

generics - 如何为返回正确类型的枚举实现 get 方法?

java - 枚举值的子类化

java - 创建一个使用 whois 的套接字

c++ - 从派生构造函数调用基类方法

c++ - C++ 标准中是否有任何计划来解决初始化列表构造函数的不一致问题?

java - 我应该使用具有大量字段的枚举还是具有大量方法的类