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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage