2
看一看下面的情形:为什么Google的JSON转换器“GSON”不遵循骑乘概念的方法?
public class ParentClass {
private Integer testVar = 1;
public Integer getTestVar() {
return testVar;
}
public void setTestVar(Integer testVar) {
this.testVar = testVar;
}
}
public class ChildClass extends ParentClass {
private Integer testVar = 2;
@Override
public Integer getTestVar() {
return testVar;
}
@Override
public void setTestVar(Integer testVar) {
this.testVar = testVar;
}
}
public class TestClass {
public static void main(String[] args) {
ChildClass childClass = new ChildClass();
childClass.setTestVar(3);
Gson gson = new Gson();
String str = gson.toJson(childClass);
System.out.println(str);
}
}
在这里,我已经使用com.google.gson.Gson包JSON的转换。它提供了以下的输出:
{ “的testvar”:1}
我的JSON字符串预期的3,但我得到的是由父类中的testvar变量中的值。
不应该孩子的getTestVar覆盖父对象?
是被直接访问的实例成员(改变每个类的实例成员的名字,但保留getter的名字相同就证明了这一点)?
如果是,怎么能有人直接访问私人成员?
编辑:我已经编辑了这个问题。此版本仅在json中显示父级的值。有没有办法让孩子的实例成员?