Hola,
En Java los parámetros de tipos de datos primitivos se pasan por valor. Por valor significa que el parámetro es una 'copia' de la variable y al cambiarle su valor se cambia la copia y no el original.
Los parámetros de objetos también se pasan por valor, pero en este caso el valor es un 'puntero'
(1) que hace referencia al objeto original; si se cambia el puntero no afecta el original, pero si se cambian los valores a los cuales hace referencia, estos últimos si cambian.
Por ejemplo:
referencias.java
Código Java:
Ver originalpublic class referencias {
public void f(int a) {
a++;
}
public void f(int[] a) {
a[0]++;
}
public referencias() {
int a = 5;
f(a);
int[] c = { 5 };
System.
out.
println(c
[0]); // 5 f(c);
System.
out.
println(c
[0]); // 6 }
public static void main
(String[] args
) { new referencias();
}
}
El valor de la variable no cambio en la primera llamada a f(), porque se paso por valor y se cambió la 'copia'. En la segunda llamada a f() se pasó una referencia a un objeto de tipo Array, y en este caso el primer valor del Array se cambió a donde apuntaba c[0].
Tendrías que cambiar el código para que regrese un valor del tipo enumerado,
Código Java:
Ver originalpublic Direccion girarSentidoReloj (Direccion direccion) {
switch (direccion) {
case ARRIBA:
return Direccion.DERECHA;
...
}
return null;
}
Y recibir los valores en la misma variable,
Código Java:
Ver originalDirección d = Direccion.ARRIBA;
d = d.girarSentidoReloj(d);
Saludos,
(1) En Java no existen los punteros, solamente referencias, pero es más fácil comprender que apuntan hacia algún dato o hacen referencia al mismo.