Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Getters de una instancia.

Estas en el tema de Getters de una instancia. en el foro de Java en Foros del Web. Hola de nuevo! :D. Tengo la siguiente duda: Código: class A { private int numero = 1; public int getNumero() { return numero; } public ...
  #1 (permalink)  
Antiguo 14/02/2016, 07:09
 
Fecha de Ingreso: septiembre-2015
Ubicación: Buenos aires
Mensajes: 21
Antigüedad: 8 años, 7 meses
Puntos: 0
Getters de una instancia.

Hola de nuevo! :D. Tengo la siguiente duda:

Código:
class A {

    private int numero = 1;

    public int getNumero() {
        return numero;
    }
    public void setNumero(int numero) {
        this.numero = numero;
    }
}


class B {

    A a = new A();

    public B() {
        a.setNumero(100);
    }

    public A getA() {
        return a;
    }
}



class C {

    B b = new B();


    A a = b.getA();



}
Al ponerle un getter de "a", a la clase B; Ese getter devuelve la misma instancia? o una copia de la misma?
  #2 (permalink)  
Antiguo 14/02/2016, 07:19
 
Fecha de Ingreso: noviembre-2008
Mensajes: 59
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: Getters de una instancia.

Buenos días. Devuelve la propia instancia 'a'. Si haces alguna modificación en al utilizar el getter, se verá reflejada en 'a'. Por eso a veces es importante devolver una copia en los getter, si quieres proteger el campo:

Código:
private A a;

public A getA(){
 return copy(a);
}
De esta forma protegemos el valor de la variable. A esto se le denomina hacer una copia defensiva. Otra opción sería devolver un objeto no modificable de la instancia. Aquí tienes más información:

http://stackoverflow.com/questions/9...effective-java
  #3 (permalink)  
Antiguo 14/02/2016, 07:36
 
Fecha de Ingreso: septiembre-2015
Ubicación: Buenos aires
Mensajes: 21
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Getters de una instancia.

Aaaah genial, gracias!!

Etiquetas: clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:25.