我想知道我们是否可以使用char类型的enaum值? 我想做这样的事情:
public enum Enum {char X, char Y};
...
Enum a=Enum.X
if (a=='X')
{// do something}
没有调用任何额外的函数将枚举转换为char (因为我希望它已经是char)。有办法吗?
答案 0 :(得分:16)
没有
但转换方法根本不是很难。
public enum SomeChar {
X('X'), Y('Y');
public char asChar() {
return asChar;
}
private final char asChar;
SomeChar(char asChar) {
this.asChar = asChar;
}
}
然后:
if (a.asChar() == 'X') { ... }
如果您不喜欢使用asChar字段/构造函数,您甚至可以将getter实现为return name().charAt(0)
。
如果您使用的是lombok,则会变得更加容易:
@RequiredArgsConstructor
@Getter
public enum SomeChar {
X('X'), Y('Y');
private final char asChar;
}
if (a.getAsChar() == 'X') { ...
顺便说一下,一个名为Enum
的枚举会让人感到困惑,因为大多数人会在源代码中看到Enum
并认为它是java.lang.Enum
。通常,遮蔽常用/导入的类名是危险的,并且类的导入不会比java.lang.*
(总是导入的)导入更多。