相关疑难解决方法(0)

如何从Java中的字符串值获取枚举值?

说我有一个只是的枚举

public enum Blah {
    A, B, C, D
}
Run Code Online (Sandbox Code Playgroud)

我想找到一个字符串的枚举值,例如"A",这将是Blah.A.怎么可能这样做?

Enum.valueOf()我需要的方法是什么?如果是这样,我将如何使用它?

java enums

1890
推荐指数
22
解决办法
106万
查看次数

如何从String值中查找Java枚举?

我想从其字符串值(或可能是任何其他值)查找枚举.我尝试了以下代码,但它不允许在初始化程序中使用静态代码.有一个简单的方法吗?

public enum Verbosity {

    BRIEF, NORMAL, FULL;

    private static Map<String, Verbosity> stringMap = new HashMap<String, Verbosity>();

    private Verbosity() {
        stringMap.put(this.toString(), this);
    }

    public static Verbosity getVerbosity(String key) {
        return stringMap.get(key);
    }
};
Run Code Online (Sandbox Code Playgroud)

java lookup enums

147
推荐指数
9
解决办法
22万
查看次数

为什么enum的构造函数不能访问静态字段?

为什么enum的构造函数不能访问静态字段和方法?这对于类非常有效,但不允许使用枚举.

我要做的是将我的枚举实例存储在静态Map中.考虑这个允许通过abbreivation查找的示例代码:

public enum Day {
    Sunday("Sun"), Monday("Mon"), Tuesday("Tue"), Wednesday("Wed"), Thursday("Thu"), Friday("Fri"), Saturday("Sat");

    private final String abbreviation;

    private static final Map<String, Day> ABBREV_MAP = new HashMap<String, Day>();

    private Day(String abbreviation) {
        this.abbreviation = abbreviation;
        ABBREV_MAP.put(abbreviation, this);  // Not valid
    }

    public String getAbbreviation() {
        return abbreviation;
    }

    public static Day getByAbbreviation(String abbreviation) {
        return ABBREV_MAP.get(abbreviation);
    }
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为枚举不允许在其构造函数中使用静态引用.然而,如果实现为类,它只能找到:

public static final Day SUNDAY = new Day("Sunday", "Sun");
private Day(String name, String abbreviation) {
    this.name = name;
    this.abbreviation = abbreviation;
    ABBREV_MAP.put(abbreviation, …
Run Code Online (Sandbox Code Playgroud)

java enums

100
推荐指数
4
解决办法
4万
查看次数

标签 统计

enums ×3

java ×3

lookup ×1