如何在Java中模拟按引用传递?

我是一个完整的Java新手。我知道Java将所有参数都视为按值传递,并且还有其他几个线程可以解释这一点。

例如,在C ++中,我可以执行以下操作:

void makeAThree(int &n)

{

n = 3;

}

int main()

{

int myInt = 4;

makeAThree(myInt);

cout << myInt;

}

哪个将输出3。我知道在Java中,所有参数都是按值传递的,因此您无法操纵传入的参数。在Java中,有没有一种标准的方法来 模拟

按引用传递?有没有办法调用操作传入变量的函数?对于我来说,很难绕开没有办法做到这一点的想法。

回答:

模拟传递引用的主要方法是传递包含值的容器。

static void makeAThree(Reference<Integer> ref)

{

ref.set(3);

}

public static void main(String[] args)

{

Reference<Integer> myInt = new Reference<>(4);

makeAThree(myInt);

System.out.println(myInt.get());

}

由于在Java中,它 引用

到由值(对象本身是从来没有在全部通过)传递的对象,设置ref3makeAThree变化相同的对象则提到myIntmain()

免责声明:Reference这不是您可以直接使用现成的Java的类。我在这里将其用作其他任何对象类型的占位符。这是一个非常简单的实现:

public class Reference<T> {

private T referent;

public Reference(T initialValue) {

referent = initialValue;

}

public void set(T newVal) {

referent = newVal;

}

public T get() {

return referent;

}

}

回答:

这并不是说修改方法的参数是一个好习惯。通常,这将被视为副作用。通常,最佳做法是将方法的输出限制为返回值和this(如果该方法是实例方法)。修改参数是设计方法的一种非常“

C”的方式,并且不能很好地映射到面向对象的编程。

以上是 如何在Java中模拟按引用传递? 的全部内容, 来源链接: utcz.com/qa/399654.html

回到顶部