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
}

しかし、パブリックスタティックファイナルのように、列挙型のように簡潔にする方法はありますか?私がAを使用し、実際には1を意味する場合、Example.A.valueなどを呼び出したくありません。

4

4 に答える 4

3

1つの方法は、変数がデフォルトでpublic、static、finalであるインターフェースを使用することです。

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 に答える