3

我想要一个常量列表,例如与整数 1、2、3 相关的 A、B、C

我知道你可以这样做

class Example {
    public static final int A = 1;
    etc...
}

enum Example {
    A(1), ... etc;
    some initialization of an integer
}

但是有没有办法像 public static final 但像枚举一样简洁?当我使用 A 并且我的意思是 1 时,我不想调用 Example.A.value 或类似的东西。

4

4 回答 4

3

一种方法是使用接口,其中变量默认是公共的、静态的和最终的:

interface Example {
    int A = 1;
    int B = 2;
}
于 2012-10-07T21:30:48.037 回答
2

如果我理解你的要求正确,你想做这样的事情:

enum Example {
    A = 1,
    B = 2,
    ....
}

没有很好的简单语法。

您要么必须写出一些常量:

public interface Example {
    public static final int A = 1;
    public static final int B = 2;
    ....
}

value...或者您可以在枚举中添加一些其他内容:

public enum Example {
    A(1),
    B(2)
    ....

    private final int val;

    public Example (int val) {
        this.val = val;
    }

    public int getValue() {
        return val;
    }
}
于 2012-10-07T21:22:19.093 回答
1

我认为最短的解决方案是:

public static final int A = 1, B = 2, C = 3;
于 2012-10-07T21:14:55.770 回答
0

如果你真的想使用枚举,那么你可以在你的枚举中重写toString()方法,以在你打印你的枚举实例时获取打印的值:-

enum Example {
    A(1), B(2);

    private int val;

    private Example(int val) {
        this.val = val;
    } 

    @Override
    public String toString() {
           switch (this) {
             case A:
                  return String.valueOf(val);

             case B:
                  return String.valueOf(val);

            }
            return super.toString();
    }
}

public class D {
    public static void main(String[] args) {    

        Example a = Example.A;
        Example b = Example.B;

        System.out.println(a);  // Prints 1
        System.out.println(b);  // Prints 2
    }
}

理想情况下,您的上述枚举就像下面的类:-

class Example {
    public static final int A = 1;
    public static final int B = 2;
}

所以,我不认为使用枚举的必要性..

于 2012-10-07T21:19:58.440 回答