Java siempre pasa por valor y no hay variables globales como en el sentido C++. Entonces, si quiere hacer lo mismo que en C++, debe devolver el nuevo valor.
así:
public int change(int x) {
return ++x;
// or
// return x + 1;
}
para probarlo:
int x = 2;
change(x);
System.out.println(x); // returns 2
x = change(x);
System.out.println(x); // returns 3
lo tanto, no tiene ningún sentido dejar que el método se llama change
, que es más sensible a lo largo de las líneas de calculateThisInt
.
Java pasa objetos por valor. Pero como Mark Byers menciona que la clase Integer es inmutable y puede usar MutableInt
de la biblioteca de Apache Commons.Para describir cómo funciona esto se podría aplicar por sí mismo por su ejemplo:
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++;
}
}
Usted necesita cambiar su función change
tener la MyInt
objetivo anterior como argumento:
public void change(MyInt i) {
i.increment();
}
Uso:
MyInt x = new MyInt();
x.setInt(2);
change(x);
System.out.println(x.getInt); // returns 3
En su caso, usted quiere cambiar un Vector objeto ...
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
Espero que todo esto tenga sentido.
Java siempre pasa por valor. –
La respuesta es probable, "no se puede", pero comience por darnos el código de Java relevante ... –
posible duplicado de [Cómo pasar por referencia en Java] (http://stackoverflow.com/questions/5614562/how-to-pass-by-reference-in-java) –