Получает ли GSON доступ к закрытым членам класса напрямую, не вызывая его методы получения для получения значения?
Соблюдение правила Java гласит: если у класса B есть закрытый член, класс A не может получить к нему доступ без методов получения/установки.
Теперь я работал над проектом с GSON, где я чувствую, что методы получения/установки игнорируются [не используются, а к приватному члену осуществляется прямой доступ]
Я просто студент, так что я мог бы пропустить какую-то обычную работу.
Класс А:
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--");
}
}
Класс Б:
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;
}
}
Примечание: Ba
присвоено значение 1
, и я закодировал getA()
чтобы всегда возвращать 10
Если я Ba
доступ к Ba
из класса A
, ВСЕ РАБОТАЕТ, КАК ОЖИДАЕТСЯ, и это не позволит мне сделать это, все хорошо, пока здесь
GSON сомнение начинается здесь
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--");
}
}
Так как Ba
является приватным, предполагается, что он вызывает метод getter, который закодирован так, чтобы всегда возвращать 10 НО вывод, который я получаю:
Выход:
{
"a": 1
}
--end--
поэтому, другими словами, мой метод get для приватного метода никогда не вызывается