在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
访问。