我有一个抽象类,如下所示
public abstract class IndexedPojo {
List<String> keySet;
public List<String> getKeySet() {
return keySet;
}
public void setKeySet(List<String> keySet) {
this.keySet = keySet;
}
public void setKeySet(JsonObject parameters) {
this.keySet = new ArrayList<>(parameters.keySet());
}
public void setKeySet(Map<String,String> parameters) {
this.keySet = new ArrayList<>(parameters.keySet());
}
}
这个抽象类的目的是提供跟踪在扩展这个类的类中初始化的变量的功能。为什么我需要这个?我正在为测试自动化项目中使用的窗体建模pojo类。其中一些参数是可选的,如果尚未初始化,则不填充相应的表单元素。目前我正在使用这个方法来创建扩展类的示例 IndexedPojo
班级:
public static <T extends IndexedPojo> T deserializeJsonTo(JsonObject parameters, Class<T> tClass) {
Gson gson = new Gson();
T instance = gson.fromJson(parameters, tClass);
instance.setKeySet(parameters);
return instance;
}
但现在的问题是一些嵌套的子类也是 extend IndexedPojo
我想用同样的方法初始化它们。例如
public class RuleSetConfigForm extends IndexedPojo {
@SerializedName("Key")
SomeNestedConfig nestedConfig;
}
public class SomeNestedConfig extends IndexedPojo {
@SerializedName("Some Key")
private String someOptionalParamater1 = "";
@SerializedName("Some Key2")
private String someOptionalParamater2 = "";
@SerializedName("Some Key3")
private String someOptionalParamater3 = "";
}
如何初始化嵌套的 SomeNestedConfig nestedConfig
当我初始化 RuleSetConfigForm
? 有没有什么自动化的方法?
1条答案
按热度按时间xbp102n01#
这可以通过自定义
TypeAdapterFactory
它将委托给默认适配器,然后调用IndexedPojo.setKeySet(...)
方法:然后在你的工厂里使用这个工厂
deserializeJsonTo(...)
方法: