在我的代码中,我必须将一个 bye 数组 (byte[] temp = null;) 传递给
函数在其内部分配并填充数据。后
从函数返回它仍然为空。我怎样才能找到一个
解决这个问题。???请帮我。
byte[] temp = null;
ret = foo(temp);
boolean foo(byte[] temp)
{
temp = new byte[];
//fill array
}
您对您的代码不太清楚,但如果我理解正确的话,您会得到类似以下内容的内容:
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
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)