【问题标题】:How can I assign a byte array to an enum variable and print it?如何将字节数组分配给枚举变量并打印它?
【发布时间】:2014-12-08 09:25:55
【问题描述】:

我想将一个字节数组赋值给一个enum 变量。我可以将一个字节分配给变量,但无法分配整个字节数组。我怎样才能做到这一点? (希望我的问题不是荒谬的。)

public enum abc
{
       a (new byte[] {0x11,0x22},
       b ((byte)0x17);
       byte value;
       byte[] val=new byte[2];
       private abc(byte[] val)
       {
            this.val=val;
       }
       private abc(byte value)
       {
            this.value=value;
       }
 }

现在如果我想打印 abc.a...它显示的是 0 而不是 11 22。我想通过将所有值存储在数组中来将整个序列打印为 11 22 17。我该怎么做?(我的问题现在清楚了吗?)

【问题讨论】:

  • 为什么要这样做?你想达到什么目的?
  • 能否请您显示“将一个字节分配给 [n enum] 变量”的意思的代码。因为我不太确定你的意思。也许如果我们能看到这段代码,我们会更好地理解你想要做什么。
  • @Abinaya:你所说的“打印”是什么意思——是关于调用枚举的toString 方法吗?
  • 如果您调用了第二个构造函数,那么是的,该数组将为空,因为您没有为其赋值。 b.value == 17, b.val[0] == b.val[1]==0, 如果是 a => a.value ==0, a.val[0]==11, a .val[1]==12
  • @TacB0sS : 那么解决办法是什么?

标签: java arrays enums byte assign


【解决方案1】:

这样的?

public enum CustomEnumConstructor {
    Fibonacci(new int[]{1, 1, 2, 3, 5, 8, 13, 21}, new int[]{34, 55, 89, 144, 233, 377, 610}, 987),
    SternBrocot(new int[]{1, 1, 2, 1, 3, 2, 3, 1, 4, 3}), ;

    private final int[] array;

    private CustomEnumConstructor(int[] array1, int[] array2, int value) {
        int[] array12 = new int[array1.length + array2.length];
        System.arraycopy(array1, 0, array12, 0, array1.length);
        System.arraycopy(array2, 0, array12, array1.length, array2.length);

        array = new int[array12.length + 1];
        System.arraycopy(array12, 0, array, 0, array12.length);
        array[array12.length] = value;
    }

    private CustomEnumConstructor(int[] array) {
        this.array = array;
    }

    public int[] getArray() {
        return array;
    }
}

【讨论】:

  • 我怀疑这可能是 OP 想要的,但老实说,您的标识符非常令人不安。我不得不把你的代码读了三遍,直到我明白它的意思。
  • 是的......但我仍然得到 0 作为它们的值,而不是那些数组 {1,2,3,4}
  • @5gon12eder 标识符很烦人?
  • @TacB0sS 既然你把density 改名为array 就好了,但你为什么把它命名为CustomEnumConstructor?它不是“构造函数”,而是enum 类型。哦,让arrayfinal
  • @5gon12eder CustomEnumConstructor 是带有自定义构造函数的枚举示例...我认为这很有意义:)
猜你喜欢
  • 2014-09-20
  • 2016-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多