gpt4 book ai didi

java - 创建具有填充变量且没有任何 setter 或构造函数的对象

转载 作者:行者123 更新时间:2023-11-30 09:11:28 25 4
gpt4 key购买 nike

我想了解为什么可以创建和填充只有私有(private)变量和重写构造函数的对象。

代码示例:

public class Test {
public static void main(String[] args) {

String json = "{\"id\":\"123546\"}";
Gson gson = new Gson();

Participant p = gson.fromJson(json, Participant.class);

System.out.println(p.getId());
}

}

public class Participant {

private int id;

public Participant() {
}

public int getId() {
return id;
}
}

它正确打印“123546”。

gson.fromJson 方法具有以下签名:<T> T: fromJson(String json, Class<T> classOfT) http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html

最佳答案

与许多其他 JSON 解析器/生成器库一样,Gson 直接或通过方法使用反射来填充字段。

通过reflection您可以访问类的公共(public)非公共(public)成员并修改它们(字段)或调用它们(方法和构造函数)。

您的起点应该是 Class类,它提供方法来检索类的 FieldMethodConstructor

Gson 使用您提供的 Class 对象,Participant.class,找出它需要填充的所有字段。它解析 JSON 并(尝试)将它们一一映射。

关于java - 创建具有填充变量且没有任何 setter 或构造函数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22083452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com