gpt4 book ai didi

java - 每个枚举项的编号?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:58:55 25 4
gpt4 key购买 nike

是否可以在 java 中定义这样的东西?

C#代码:

public enum Character
{
A = 1,

B = 2,

C = 4,

D = 8

}


...

Character ch = /* from user */

if(ch & Character.A)
{
// some operation...
}

例如,如果 ch 设置为 Character.B,则 if 的结果将为 false:

ch = 00000000 00000000 00000000 00000010
A = 00000000 00000000 00000000 00000001
------------------------------------------
& 00000000 00000000 00000000 00000000

我想实现类似的东西!在 Java 中有可能吗?

最佳答案

好吧,您几乎可以做到这一点:

public enum CharEnum // Let's avoid java.lang.* clashes
{
A(1), B(2), C(4), D(8);

private final int mask;

private CharEnum(int mask)
{
this.mask = mask;
}

public int getMask()
{
return mask;
}
}

然后:

CharEnum ch = /* from user */

if ((ch.getMask() & CharEnum.A.getMask()) > 0)
{
// some operation...
}

这在某些情况下很有用,但正如 Michael 所说,您绝对应该查看 EnumSet对于一般的“值集”选项。

如果您确实决定使用具有值的枚举,您可以在枚举本身中放置额外的逻辑:

public enum CharEnum
{
// Other code as before

public boolean overlapsWith(CharEnum ch)
{
return (ch.mask & mask) > 0;
}
}

关于java - 每个枚举项的编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3360283/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com