Java:如何通过引用传递byte []?

您可以使用关键字“ ref”在.NET中进行操作。用Java有什么办法吗?

回答:

您正在用自己的方法做什么?如果仅填充现有数组,则不需要.NET或Java中的按引用传递语义。在这两种情况下,引用都将按值传递-因此对 对象的

更改将由调用者看到。这就像告诉某人您的住所地址,并要求他们向其提供物品-没问题。

如果您 确实

需要传递引用语义,即调用方将看到对参数本身所做的任何更改,例如将其设置为null或对其他字节数组的引用,则这两种方法都需要返回新值,或者需要传递对某种“

holder”的引用,该“ holder”包含对字节数组的引用,并且稍后可以从中获取(可能已更改)引用。

换句话说,如果您的方法如下所示:

public void doSomething(byte[] data)

{

for (int i=0; i < data.length; i++)

{

data[i] = (byte) i;

}

}

那你就好了 如果您的方法如下所示:

public void createArray(byte[] data, int length)

{

// Eek! Change to parameter won't get seen by caller

data = new byte[length];

for (int i=0; i < data.length; i++)

{

data[i] = (byte) i;

}

}

那么您需要将其更改为:

public byte[] createArray(int length)

{

byte[] data = new byte[length];

for (int i=0; i < data.length; i++)

{

data[i] = (byte) i;

}

return data;

}

要么:

public class Holder<T>

{

public T value; // Use a property in real code!

}

public void createArray(Holder<byte[]> holder, int length)

{

holder.value = new byte[length];

for (int i=0; i < length; i++)

{

holder.value[i] = (byte) i;

}

}

欲了解更多详情,请阅读参数传递的C#和参数传递在Java中。(恐怕前者要比后者更好。有一天,我会去做更新。)

以上是 Java:如何通过引用传递byte []? 的全部内容, 来源链接: utcz.com/qa/404222.html

回到顶部