在java中修改函数内部参数的简洁方法是什么?

Pop*_*orn 0 c java parameters

我有兴趣用Java做这个C代码:

// sets n's ith bit from right, i starts from 0
void setBit(int* n, int i){
   *n = *n | (1 << i);
}
Run Code Online (Sandbox Code Playgroud)

但是,看起来java无法传递地址,那么一些干净的方法会是什么呢?

我想到了两种方法,但我想知道是否有更好的方法来做到这一点?

方法1:使用数组

 // sets n[0]'s ith bit from right, i starts from 0
public void setBit(int[] n, int i){
   n[0] = n[0] | (1 << i);
}
Run Code Online (Sandbox Code Playgroud)

方法2:使用课程

private class Data{
   int value;
}

// sets d.value's ith bit from right, i starts from 0
public void setBit(Data d, int i){
   d.value = d.value | (1 << i);
}
Run Code Online (Sandbox Code Playgroud)

Lou*_*man 8

不,没有更好的方法来做到这一点......

除非你想用传统的Java方式来做,否则就是这样

d = setBit(d, i);

public int setBit(int d, int i) {
  return d | (1 << i);
}
Run Code Online (Sandbox Code Playgroud)

这在Java中可以说"修改函数的参数"几乎不洁净的.干净的方法是找到一些修改参数的替代方法.

(有时这是不可避免的,在这种情况下,你的解决方法就是可行的方法.也就是说,如果你想编写一个方法modify(myData),通常最好在modify()方法中添加一个方法myData.)