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