Javaは常に値を渡し、C++の意味でのグローバル変数はありません。したがって、C ++と同じことをしたい場合は、新しい値を返す必要があります。
したがって:
public int change(int x) {
return ++x;
// or
// return x + 1;
}
それをテストするには:
int x = 2;
change(x);
System.out.println(x); // returns 2
x = change(x);
System.out.println(x); // returns 3
したがって、メソッドを呼び出させることは意味がありません。change
の線に沿った方が賢明ですcalculateThisInt
。
Javaはオブジェクトを値で渡します。しかし、Mark Byersが言及しているように、IntegerMutableInt
クラスは不変であり、 ApacheCommonsライブラリから使用できます。これがどのように機能するかを説明するために、例として自分で実装できます。
public class MyInt() {
public int i;
public void setInt(int i) {
this.i = i;
}
public int getInt() {
return this.i;
}
public int increment() {
this.i++;
}
}
上記のオブジェクトを引数としてchange
持つように関数を変更する必要があります。MyInt
public void change(MyInt i) {
i.increment();
}
使用法:
MyInt x = new MyInt();
x.setInt(2);
change(x);
System.out.println(x.getInt); // returns 3
あなたの場合、Vectorオブジェクトを変更したい...
public void changeVector(Vector v) {
// anything you do with 'v' will change it even
// for the scope that called this method
}
// Usage:
Vector v = new Vector();
changeVector(v);
// v should be changed after calling change vector method
これがすべて理にかなっていることを願っています。