我需要为某些对象实现JSON序列化,并且在与通用集合进行集成时遇到了一个问题。
所有可序列化的类都实现此接口(JSONObject来自此库):
interface JSONSerializable{
public JSONObject dump() throws JSONException //serializes object
public void load(JSONObject obj) throws JSONException //deserializes object
}
我基于java.util.list的集合的代码大致如下所示:
class AwesomeList<T extends JSONSerializable> implements JSONSerializable{
private LinkedList<T> items = new LinkedList<T>();
...
...
public JSONObject dump() throws JSONException {
JSONObject result = new JSONObject();
JSONArray a = new JSONArray();
for(T i : items){
a.put(i.dump());
}
result.put("items", a);
return result;
}
public void load(JSONObject obj) throws JSONException{
//here is my problem
}
}
我的问题是:当我从JSONObject加载AwesomeList时,我需要创建其元素,但是这是不可能的,因为Java禁止我写
T newItem = new T();
newItem.load(obj);
我应该如何修改此任务的方法?
您是否绑定到该库?Google
Gson
非常受欢迎。我自己没有将其与Generics一起使用,但他们的首页说Gson认为对Generics的支持非常重要。
问题内容: 我尚未遇到任何与序列化相关的问题。但是PMD和Findbugs发现了一系列关于序列化的潜在问题。典型的情况是注入的记录器被检测为不可序列化。但是还有更多- 还有几个CDI bean。 我还没有找到有关如何正确处理序列化的最佳实践。 反序列化注入的和注入的字段是否会被注入? 应该将它们标记为吗? 还是应该忽略/关闭代码检查? 我真的应该按照PMD的建议为所有这些字段提供访问者吗? 问题答
是否有一种简单的方法来反序列化可以是或
分包 建议将服务接口、服务模型、服务异常等均放在 API 包中,因为服务模型和异常也是 API 的一部分,这样做也符合分包原则:重用发布等价原则(REP),共同重用原则(CRP)。 如果需要,也可以考虑在 API 包中放置一份 Spring 的引用配置,这样使用方只需在 Spring 加载过程中引用此配置即可。配置建议放在模块的包目录下,以免冲突,如:com/alibaba/china/xxx/d
问题内容: 我目前正在一个项目中,该项目需要保留任何类型的对象(我们没有任何控制权的实现),以便以后可以恢复这些对象。 我们无法实现ORM,因为我们不能在开发时限制我们库的用户。 我们的第一个选择是使用Java默认序列化对其进行序列化,但是当用户开始传递同一对象的不同版本(属性更改的类型,名称等)时,恢复对象存在很多麻烦。 我们尝试使用XMLEncoder类(将对象转换为XML),但是发现缺少功能
引子 Rax 提供的长列表标签有很多,在什么场景下使用什么列表组件,怎样选择列表组件性能会更好,这些问题可能会给刚接触 Rax 的同学带来困扰。本文结合 Rax 0.5 发布版本对列表能力进行一次详细的梳理。 如何让页面滚动 在开始正题之前先说说为什么要有长列表的概念,以及如何让页面可以滚动。 传统的 Web 页面天生在浏览器里就是可以滚动的,我们额外引入一个滚动容器的概念好像比较多余。但当我们做
我遇到了这个问题,OP想要改进下面的if块。我把这作为一个新问题来回答,因为我正在寻找这类问题的更一般的解决方案。 现在有获得结果的可能性,其中。一些答案建议使用多数组作为表来减少if-丛林。 但是我想知道如何用大n和k来解决这样的问题?因为使用if、switch和建议的数组方法的解决方案无法很好地扩展,因此应避免在代码中键入类似的内容。 如果我考虑组合问题,必须有一种方法来轻松评估它们。