我知道这个问题已经解决了很多次-但是我的Java/C++知识非常薄弱,我几乎无法理解答案:-( ...我真正想要的只是一个非常简单的示例。

在C++中,我可以编写以下代码:

void func()
{
  int x = 3;
  add_one(x);
  // now x is 4.
}
void add_one(int &var)
{
  var++;
}

我现在想看到的是用java实现相同效果的最简单方法。

最佳答案

你不能直接。您可以得到的最接近的结果是将值放在对象中,然后将引用(按值,因此引用将被复制)传递到方法中。

void func()
{
  int x = 3;
  int[] holder = [x];
  add_one(holder);
  // now holder[0] is 4.  x is still 3.
}

// container here is a copy of the reference holder in the calling scope.
// both container and holder point to the same underlying array object
void add_one(int[] container)
{
    container[0]++;
}

在这里,我使用一个数组,但是包装器可以是任何对象。

10-07 19:09
查看更多