0

以下のように、読みやすさのために Enum を定数として使用しようとしています。

Public enum x { test1 , test2 , test3 }

この列挙型をメソッドに渡し、示されているように int 値として使用したい

private void (int type)
{ 
  switch(int) 
  {
    case enum.X:
          // do somthing 
           break;
   }
 } ;

int 値を使用するよりも明確であるため、ここで enum を使用できますか。( switch 1 など) 。このように使用することは可能ですか?

4

3 に答える 3

4

switchはい、 Java のステートメントで列挙型を使用できるはずです。

public enum SomeEnum { FOO, BAR, BAZ };

// in a class...
private void something(SomeEnum s) {
    switch (s) {
        case FOO:
            // do something
            break;
        case BAR:
            // do something else
            break;
    }
}

int 値がこれにどのように結びついているかはわかりませんが、通常の Java クラスのように列挙型にフィールド/メソッドを設定でき、これらを使用して他の POJO と同様に int (または他の型) 値を保持できます。

以下は、enum クラスのコンストラクターを宣言する例です。これにより、enum の各インスタンスが構築されるときに内部変数の値を渡すことができます。何が起こっているかを理解するのを助けるために: まず、列挙型で項目を宣言します - 各宣言はコンストラクターを呼び出すので、ここでインスタンス変数を渡すことができます。次に、通常の Java クラスと同様に、enum クラスのコードが続きます。

public enum AnotherEnum {
    ONE(1, "un"), TWO(2, "deux"), THREE(3, "trois"), FIFTY_SEVEN(57, "cinquante-sept");

    private final int someInt;
    private final String french;
    private AnotherEnum(int i, String s) {
        this.someInt = i;
        this.french = s;
    }
    public int getSomeInt() {
        return this.someInt;
    }
    public String getFrench() {
        return this.french;
    }
}

たとえば、System.out.println(AnotherEnum.TWO.getSomeInt())を印刷2し、System.out.println(AnotherEnum.FIFTY_SEVEN.getFrench())を印刷しますcinquante-sept

于 2013-11-01T00:43:09.333 に答える
0

いいえ、次のようには言えません。

case Enumerator.ordinal():

しかし、次のように言うことができます。

switch(EnumObject.values()[intVar]) {
  case Enumerator1:
       ...
}
于 2013-11-01T00:46:55.373 に答える