1

我正在将部分代码从C#程序转换为Java,其中定义了一个[Flag] 枚举,如下所示:

[Flags]
public enum ClientFlags
{
    None        = 0x00000000,
    Flag1       = 0x00000001,
    Flag2       = 0x00000002
    ...

并在运行时进行掩码操作,例如

ClientFlags.Flag1| ClientFlags.Flag2

在我的java代码中,我复制了没有枚举的同一个类:

public static byte None             = (byte)0x0;
public static byte Flag1            = (byte)0x01;
public static byte Flag2            = (byte)0x02;

但是当我做了同样的操作时

byte flags = ClientFlags.Flag1 | ClientFlags.Flag2

那么结果就不一样了!!我如何在java中复制相同的操作?你能帮助我吗?

4

1 回答 1

0

好吧,根本不可能有任何结果(包括“不同”结果),因为代码无法编译。按位或运算的结果是int,因此您必须将flags类型更改为int或将结果转换为byte


int flags = ClientFlags.Flag1 | ClientFlags.Flag2;

或者


byte flags = (byte)(ClientFlags.Flag1 | ClientFlags.Flag2);

然后你会得到与 C# 相同的结果,即3.

如果您的意思是使用 .NET,您可以将结果输出为“Flag1,Flag2”,那么您可能必须自己实现它。

于 2013-09-06T11:02:46.233 回答