GSON greift direkt auf private Mitglieder zu?
Zusammenfassung
Geht GSON aufprivate Mitglieder einer Klasse direkt, ohne ihre Getter-Methoden aufzurufen, um den Wert abzurufen?
Die Regel von Java lautet, wennKlasse hat ein privates Mitglied ituf @kann nicht zugegriffen werden durchKlasse ohne Getter / Setter-Methoden.
Jetzt habe ich mit GSON an einem Projekt gearbeitet, in dem ich das Gefühl habe, dass Getter / Setter-Methoden umgangen werden [nicht verwendet, und auf privates Mitglied wird direkt zugegriffen]
Nun bin nur ein Student, also könnte mir möglicherweise eine gemeinsame Arbeit fehlen.
Klasse
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--");
}
}
Klasse
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;
}
}
Hinweis: B.a wird der Wert 1 zugewiesen, und ich habe getA () so codiert, dass immer 10 @ zurückgegeben wir
wenn ich von Klasse A auf B.a zugreife, ALLES FUNKTIONIERT WIE ERWARTET und es nicht lassenmich mach schon, alles in Ordnung bis hier
GSON Zweifel beginnt hier
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--");
}
}
Jetzt, da B.a privat ist, soll es die Getter-Methode aufrufen, die so codiert ist, dass sie immer 10 zurückgibt, ABER die Ausgabe, die ich erhalte, ist
Ausgabe
{
"a": 1
}
--end--
so mit anderen Worten, meine Getter-Methode für die private Methode wird NIE aufgerufen