我有一个看起来像这样的POJO:
hello
public class Task {
private TaskData taskData;
String id;
private int status;
private int success;
private int error;
}
class TaskData {
transient LinkedList<String> list0;
transient LinkedList<String> list1;
}
中的列表可能很大(超过100mb)。
从TaskData
获取所有对象时,我不想包含/加载Map<String, Task> tasksMap = new HashMap()
字段。我该如何实现?
P.S。 它与序列化无关。
更新: 通过“获取所有对象”,我的意思是,例如:
TaskData
答案 0 :(得分:1)
为该字段提供默认值null,然后稍后使用setter方法更新该值。
public class Task {
private TaskData taskData;
String id;
private int status;
private int success;
private int error;
}
class TaskData {
transient LinkedList<String> list0 = null;
transient LinkedList<String> list1 = null;
public void setList0(LinkedList<String> list){
list0 = list;
}
public void setList1(LinkedList<String> list){
list1 = list;
}
}
答案 1 :(得分:0)
我认为另一种方法是创建一个浅表复制方法,排除不需要的字段,并在填充Map时使用它,例如:
public Task shallowCopy() {
Task newTask = new Task();
newTask.id = id;
newTask.status = status;
...
return newTask;
}