初始化并返回java中的字节数组

初始化并返回java中的字节数组,java,bytearray,return,Java,Bytearray,Return,在我的代码中,我必须将bye数组(byte[]temp=null;)传递给 函数,该函数被分配并填充其中的数据。之后 从函数返回时,它仍然为空。我怎样才能找到一个 这个问题的解决办法。???请帮帮我 byte[] temp = null; ret = foo(temp); boolean foo(byte[] temp) { temp = new byte[]; //fill array } 您需要使用以下选项: byte[] temp = ne

在我的代码中,我必须将bye数组(byte[]temp=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;
methodThatAllocatesByteArray(temp);
// temp is still null.
如果这是对你所说内容的正确理解,那么问题是temp是一个不存在的引用。将该引用发送到另一个方法会生成该引用的副本(而不是使用相同的引用),因此,更改该引用(分配给参数变量)只会更改局部方法的引用。您需要做的是从如下方法返回一个新的
字节[]

public byte[] methodThatAllocatesByteArray() {
    // create and populate array.
    return array;
}
byte[] temp = new byte[size];
methodThatAllocatesByteArray(temp);
并这样称呼它:
byte[]temp=methodthattallocatesbytearray()
。或者,您可以先初始化数组,然后将对该数组的引用传递给另一个方法,如下所示:

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

由于在这种情况下,AllocatesByteArray方法中的参数将指向与
temp
相同的数组,因此对它的任何更改(除了将其重新分配到不同的数组或null)都可以通过
temp

向我们显示您拥有的代码。如果您没有返回创建的类型,那么它当然将为null。一旦你返回main,对象就会被销毁。你能提供你函数的代码吗?如果这是你的代码,那么你可以看到为什么它为null,在你的问题中以编辑的形式发布你的代码。我知道它将为null,我需要main方法中临时数组中的数据。有什么方法可以做到这一点吗?Java只通过值传递引用,所以您不能按照您建议的方式更改参数。我不能返回temp:-)而且我只知道temp的大小,为什么您不能返回一个
字节[]
?让foo知道它应该是什么尺寸是理想的,我看它没有问题。请看我的评论@ankur@UnnikrishnanPV恐怕我得支持彼得·劳里;为什么不能返回一个
字节[]
?在某种程度上,你必须知道数组的大小,应该有一种方法可以从你调用它的地方确定它。除非你想换一种不同的语言(比如C),否则你根本不可能做到这一点。如果你想让我们解决这些问题,你必须告诉我们你的限制因素是什么。你的API冻结了吗?如果是这样,您可能必须使用您知道至少足够大的值初始化数组,然后将第一个
null
值作为结束。