¿Como pasar un objeto a una constructora sin crear una copia?

Iniciado por xaps, 28 Febrero 2014, 11:46 AM

0 Miembros y 1 Visitante están viendo este tema.

xaps

Buenas, estoy aprendiendo java y me he propuesto crear un TicTacToe como ejercicio de entrenamiento.
He desarrollado dos clases, la clase Jugador y la clase Tablero. El esquema que tengo pensado es crear una instancia de Tablero y posteriormente pasar un puntero a cada Jugador para que puedan operar directamente con el, pero no se como hacer esto.
Les pongo un ejemplo:
Código (java) [Seleccionar]
public class Tablero
{
...
}

public class Jugador
{
  private Tablero tablero;
  Jugador(Tablero tablero)
  {
    this.tablero = tablero;
  }
}


Entonces, si hiciera:
Código (java) [Seleccionar]
Tablero tab = new Tablero();
Jugador jug = new Jugador(tab);


El objeto jug contendrá una copia de tab, o un puntero a tab?
"The programmers of tomorrow are the wizards of the future" - Gave Newel

egyware

Cita de: xaps en 28 Febrero 2014, 11:46 AM
El objeto jug contendrá una copia de tab, o un puntero a tab?


Tendrá una referencia al objeto creado, así que no te preocupes. En ningún momento tendrás una copia del tablero.

xaps

Gracias, pero estoy algo confundido. En Java como diferencio cuando se crea una copia y cuando se hace una referencia?
"The programmers of tomorrow are the wizards of the future" - Gave Newel

egyware

En Java todas las clases, interfaces, enums y arreglos se pasan por referencia. Lo único que se pasa por valor (copia) son las variables primitivas como int, double, char, etc... (String no es variable primitiva)

Espero que te haya quedado claro.

Saludos!

xaps

Cita de: egyware en 28 Febrero 2014, 14:01 PM
En Java todas las clases, interfaces, enums y arreglos se pasan por referencia. Lo único que se pasa por valor (copia) son las variables primitivas como int, double, char, etc... (String no es variable primitiva)

Espero que te haya quedado claro.

Saludos!
Me ha quedado claro, muchas gracias! :)

En caso de que quisiera crear una copia de un objeto, la manera sería con una constructora-copiadora, cierto?
"The programmers of tomorrow are the wizards of the future" - Gave Newel

egyware

Cita de: xaps en 28 Febrero 2014, 14:25 PM
En caso de que quisiera crear una copia de un objeto, la manera sería con una constructora-copiadora, cierto?

Así es, aunque no todas las clases tienen un constructor copia. También puedes averiguar el uso de clone que sirve para clonar un objeto pero, requiere más estudio para entender bien su uso.

Saludos!

xaps

"The programmers of tomorrow are the wizards of the future" - Gave Newel