GSON直接访问私人会员?
GSON 是否直接访问类的私有成员而不调用其 getter 方法来获取值?
遵循的 Java 规则是,如果类 B 具有私有成员,则如果没有 getter/setter 方法,则类 A 无法访问该成员。
现在我正在与GSON一起做一个项目,在那里我感觉getter/setter方法被绕过[未使用,并且直接访问私有成员]
我只是一个学生,所以我可能会错过一些常见的工作。
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--");
}
}
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--");
}
}
由于是私有的,它应该调用getter方法,该方法被编码为始终返回10,但我得到的输出是B.a
输出:
{
"a": 1
}
--end--
换句话说,我的私有方法的 getter 方法永远不会被调用