A GSON acessa diretamente membros privados?
Resumo:
o GSON acessamembros privados de uma classe diretamente sem chamar seus métodos getter para buscar o valor?
A regra do Java que se segue é seclasse B tem um membro privadonão pode ser acessado porclasse A sem métodos getter / setter.
Agora, eu estava trabalhando em um projeto com o GSON, onde, na minha opinião, os métodos getter / setter estão sendo ignorados [não usados e o membro privado é acessado diretamente]
Bem, sou apenas um estudante, então eu poderia estar perdendo algum trabalho comum.
classe 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--");
}
}
classe 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 recebe o valor 1 e codifiquei getA () para sempre retornar 10
se eu acessar B.a da classe A,TUDO FUNCIONA COMO ESPERADO e issonão vai deixar eu faço isso, tudo bem até aqui
A dúvida da GSON começa aqui
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--");
}
}
Agora, já que B.a é privado, deve-se chamar o método getter que é codificado para sempre retornar 10, mas a saída que recebo é
Resultado:
{
"a": 1
}
--end--
então, em outras palavras, meu método getter para o método privado NUNCA É INVOCADO