85

このように定義された列挙型があり、個々のステータスの文字列を取得できるようにしたいと考えています。そのようなメソッドをどのように記述すればよいですか?

ステータスの int 値を取得できますが、int からも文字列値を取得するオプションが必要です。

public enum Status {
    PAUSE(0),
    START(1),
    STOP(2);

    private final int value;

    private Status(int value) {
        this.value = value
    }

    public int getValue() {
        return value;
    }
}
4

6 に答える 6

50

メソッドを使用できますvalues()

たとえばStatus.values()[0]、あなたの場合は PAUSE を返します。印刷すると、toString()呼び出されて「PAUSE」が印刷されます。

于 2013-07-19T08:48:21.923 に答える
12

指定されたベローズとしてデフォルトのメソッド name() を使用します

public enum Category {
        ONE("one"),
        TWO ("two"),
        THREE("three");

        private final String name;

        Category(String s) {
            name = s;
        }

    }

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println(Category.ONE.name());
    }
}
于 2016-05-19T11:26:10.953 に答える
9

このメソッドを Status 列挙に追加できます。

 public static String getStringValueFromInt(int i) {
     for (Status status : Status.values()) {
         if (status.getValue() == i) {
             return status.toString();
         }
     }
     // throw an IllegalArgumentException or return null
     throw new IllegalArgumentException("the given number doesn't match any Status.");
 }

public static void main(String[] args) {
    System.out.println(Status.getStringValueFromInt(1)); // OUTPUT: START
}
于 2013-07-19T08:55:47.227 に答える
0

enum の API には .name() があり、次の例のように非常に簡単に使用できると思います。

private int security;
public String security(){ return Security.values()[security].name(); }
public void setSecurity(int security){ this.security = security; }

    private enum Security {
            low,
            high
    }

これであなたは単に呼び出すことができます

yourObject.security() 

この例では、高/低を文字列として返します

于 2017-11-16T11:20:16.617 に答える