相关疑难解决方法(0)

在Java中将Int转换为枚举

在给定以下枚举的情况下,将Int转换为枚举的正确方法是什么?

public enum MyEnum
{
    EnumValue1,
    EnumValue2
}


MyEnum enumValue = (MyEnum) x; //Doesn't work???
Run Code Online (Sandbox Code Playgroud)

java enums casting ordinal

317
推荐指数
11
解决办法
25万
查看次数

为什么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万
查看次数

无法引用初始化程序中的静态枚举字段?

我刚刚得到Java5项目有这个错误,我尝试使用Java5和Java6,但它仍然存在.它以某种方式工作(因为它是在svn),我怎么能绕过编译器错误?

java compiler-construction

44
推荐指数
2
解决办法
1万
查看次数

如何将值从值转换为枚举?

我有一个看起来有点像这样的枚举:

public enum Numbers {
  ONE(1), TWO(2), THREE(3);

  public final int num;

  public Numbers(int num) {
    this.num = num;
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够从参数转换为枚举,例如从int 1转换为枚举ONE.Java Enums中是否有任何内置机制来执行此操作,或者我是否必须为其编写自己的逻辑?

java enums

2
推荐指数
1
解决办法
599
查看次数

标签 统计

java ×4

enums ×3

casting ×1

compiler-construction ×1

ordinal ×1