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

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

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

你需要使用这个:

  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; } 

你不是很清楚自己的代码,但如果我理解你的话,你会得到以下内容:

 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)都可以通过temp访问。