GSON accede directamente a miembros privados?
Resumen:
accede GSONmiembros privados de una clase directamente sin invocar sus métodos getter para obtener el valor?
La regla de Java que se sigue es siclase B tiene un miembro privadono se puede acceder porclase A sin métodos getter / setter.
Ahora estaba trabajando en un proyecto con GSON donde tengo la sensación de que los métodos getter / setter están siendo ignorados [no utilizados, y se accede directamente a un miembro privado]
Bueno, solo soy un estudiante, por lo que podría faltar algún trabajo común.
clase A
public class A {
public static void main(String[] args) {
B b = new B();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println(gson.toJson(b));
System.out.println("--end--");
}
}
clase B
public class B {
private int a;
public B() {
a = 1;
}
public int getA() {
System.out.println("I am invoked !");
return 10;
}
public void setA(int a) {
this.a = a;
}
}
Nota: B.a tiene el valor asignado de 1, y codifiqué getA () para que siempre devuelva 10
si accedo a B.a desde la clase A,TODO FUNCIONA COMO ESPERADO y esono dejes yo lo hago, todo bien hasta aquí
La duda de GSON comienza aquí
public class A {
public static void main(String[] args) {
B b = new B();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
System.out.println(gson.toJson(b));
System.out.println("--end--");
}
}
ahora como B.a es privado, se supone que invoca el método getter que está codificado para devolver siempre 10 PERO la salida que obtengo es
Salida:
{
"a": 1
}
--end--
en otras palabras, mi método getter para el método privado NUNCA SE INVOCA