-1

文字列を列挙型に変換したい。しかし、どのように?

class Letter {
    A, B, C
}

String letter = "A";
switch (letter) {
    case Letter.A: //cannot convert from Letter to String
    case Letter.A.toString(): //case expressions must be constant expressions
    case Letter.C.name(): //case expressions must be constant expressions
    default:
}
4

5 に答える 5

5

最初はLetter列挙型でなければなりません:

enum Letter {
    A, B, C
}

Letter letter = Letter.valueOf("A")
// and just switch
switch (letter) {
    case A:
    case B:
    case C:
}
于 2013-10-24T13:21:47.647 に答える
3

次のように実行できます。

String letter = "A";
switch (Letter.valueOf(letter)) {
    case A: // No problem!
    case B:
    case C:
    default:
}

ideone のデモ

于 2013-10-24T13:22:05.680 に答える
2

クラスをこれに置き換えるのではなく、その列挙型を最初に作成します

Letter obj = Letter.valueOf(letter);
switch (obj) {
    case A: //cannot convert from Letter to String
    case B: //case expressions must be constant expressions
    case C: //case expressions must be constant expressions
    default:
于 2013-10-24T13:24:06.127 に答える
1

このようにしてください。

Letter l = Letter.valueOf("A");

また

Letter l = Enum.valueOf(Letter.class, "A");

switch (l) {
    case A:
    case B:
    case C:
    default:
}
于 2013-10-24T13:22:28.733 に答える