Guía y comprobaciones
new construye una instancia
Una variable de un tipo de clase guarda una referencia. La expresión new Etiqueta(...) crea un objeto e invoca un constructor; asignar esa referencia a otra variable no clona el objeto.
Ejemplo completo en Ejemplo.java:
class Etiqueta {
private String texto;
Etiqueta(String texto) { this.texto = texto; }
void cambiar(String nuevo) { texto = nuevo; }
String leer() { return texto; }
}
public class Ejemplo {
public static void main(String[] args) {
Etiqueta original = new Etiqueta("Borrador");
Etiqueta misma = original;
Etiqueta otra = new Etiqueta("Borrador");
misma.cambiar("Revisado");
System.out.println(original.leer()); // Revisado
System.out.println(otra.leer()); // Borrador
System.out.println(original == misma); // true
System.out.println(original == otra); // false
}
}
Identidad y contenido
El operador == responde si dos referencias apuntan al mismo objeto. Para una igualdad basada en campos, una clase puede definir equals y un hashCode coherente. Que dos objetos muestren el mismo texto no hace que compartan identidad.
El ejemplo deja Etiqueta como clase no pública dentro del mismo archivo para que se pueda compilar con javac Ejemplo.java. En un proyecto mayor, separarla en su propio archivo puede mejorar la organización.
null y vida de la referencia
Una referencia puede ser null, lo que significa que no apunta a un objeto. Invocar un método sobre ella produce un error; comprobar si se construyó correctamente es distinto de crear una instancia vacía por defecto. Prefiere que los métodos indiquen de forma clara cuándo pueden no devolver un objeto.
No llames a un constructor como si fuera un método estático. Tampoco asumas que declarar Etiqueta e; ya crea una etiqueta. Esa declaración sólo reserva un nombre de variable local, que debe inicializarse antes de leerse.
Cuándo compartir un objeto
Compartir puede ser intencionado: dos componentes pueden necesitar observar el mismo estado. Si necesitas independencia, crea una nueva instancia con datos adecuados y decide cómo tratar sus objetos internos. Una copia superficial puede seguir compartiendo listas u otros miembros mutables.
Preguntas frecuentes
¿Asignar un objeto a otra variable lo copia?
Copia la referencia. Ambas variables pueden apuntar al mismo objeto.
¿== compara todos los campos?
No. Con referencias compara identidad. La igualdad de contenido depende del contrato de equals de la clase.
Continúa con una guía relacionada
Documentación oficial
Fuentes consultadas
Fuentes y referencias
Consulta referencias útiles para ampliar o contrastar esta guía.
Siguiente lectura
Guias relacionadas para continuar
Si quieres seguir con el mismo tema, aqui tienes paginas cercanas que amplian la tecnica, comparan variantes o te llevan a la siguiente rutina.