在java中初始化并返回一个字节数组

时间:2012-09-19 13:20:09

标签: java bytearray return

在我的代码中,我必须将一个再见数组(byte [] temp = null;)传递给a      在其中分配和填充数据的函数。后      从函数返回它仍然是null。我怎么能找到一个      解决这个问题。???请帮帮我。

  byte[] temp = null;
  ret = foo(temp);

  boolean foo(byte[] temp)
  {
      temp = new byte[];
      //fill array
  }

2 个答案:

答案 0 :(得分:7)

您对代码的了解并不是很清楚,但如果我理解正确,您可能会遇到以下情况:

byte[] temp = null;
methodThatAllocatesByteArray(temp);
// temp is still null.

如果这是对你所说的正确理解,那么问题就是temp是对任何事物的引用。将该引用发送到另一个方法会生成该引用的副本(而不是使用相同的引用),因此,更改该引用(分配给参数变量)只会更改本地方法的引用。您需要做的是从方法中返回一个新的byte[]

public byte[] methodThatAllocatesByteArray() {
    // create and populate array.
    return array;
}

并将其称为:byte[] temp = methodThatAllocatesByteArray()。或者您可以先初始化数组,然后将对该数组的引用传递给另一个方法,如下所示:

byte[] temp = new byte[size];
methodThatAllocatesByteArray(temp);

因为在这种情况下methodThatAllocatesByteArray中的参数将指向与temp相同的数组,所以对它的任何更改(除了将其重新分配给不同的数组或null)都可以通过{ {1}}。

答案 1 :(得分:4)

你需要使用它:

 byte[] temp = new byte[some_const];
  ret = foo(temp);

  boolean foo(byte[] temp)
  {
      //fill array
  }

 byte[] temp = null;
  temp  = foo(temp);

  byte[] foo(byte[] temp)
  {    temp = new byte[some_const];
      //fill array
      return temp;
  }