在Java中是否可以返回enum
值而不必调用函数来返回值,例如我的示例中的getFlag()
?如果是这样,怎么样?
public enum MessageFlags {
BIT0((short)1),
BIT1((short)2),
BIT2((short)4),
BIT3((short)8),
BIT4((short)16),
BIT5((short)32),
BIT6((short)64),
BIT7((short)128),
BIT8((short)256),
BIT9((short)512),
BIT10((short)1024),
set_freq(BIT0),
get_freq(BIT1);
short bitFlag = 0;
MessageFlags flag;
MessageFlags(short flag) {
this.bitFlag = flag;
}
MessageFlags(MessageFlags flag) {
this.flag = flag;
}
public short getFlag() {
return this.flag.bitFlag;
}
public short getValue() {
return this.bitFlag;
}
}
答案 0 :(得分:3)
只需说出MessageFlags.BITX
即可返回与getFlag()
答案 1 :(得分:2)
您可以import static MessageFlags.*;
并说BITX.getFlag()
。
这是一个完整的例子:
<强> A.java 强>
package foo;
import static foo.B.*;
public class A{
public B value = BAR;
}
<强> B.java 强>
package foo;
public enum B{
BAR, BAZ, BOO
}
答案 2 :(得分:1)
我跟着@ Jeremy的建议:
package foo;
import static foo.B.*;
然后我在set_freq
枚举中创建了一个名为MessageFlags
的方法。我创建了这个函数static
并让它返回short
。例如,
public static short set_freqflag() {
return BIT0.getFlag();
}
set_freqflag
的语义有点奇怪,因为你没有设置任何东西,但我目前没有更好的名字。这允许我只是陈述set_freqflag()
而不是我之前做的更长的方式。
答案 3 :(得分:0)
我可能已经很晚了,但我正在写信给那些访问这个主题的人寻求帮助。
如果您有一个枚举,并且您希望在不调用get函数的情况下默认返回其值的特定参数,则需要在所选函数上方插入@Override,如:
public class Plants {
public enum Fruits {
APPLE ("sweet"),
GRAPEFRUIT ("sour");
private String taste;
Fruits (String taste) {
this.taste = taste;
}
@Override
public String getTaste() {
return this.taste;
}
}
}
现在你可以在没有get函数的情况下调用你想要的任何枚举值:
Plants.Fruits.APPLE
它会回归“甜蜜”
P.S。我不是一个专业的程序员,如果我偶然写了反传统的东西,请纠正我。