[英]Java get only certain object fields
我有一个看起来像这样的 POJO:
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;
}
TaskData
的列表可能很大(超过 100mb)。
从Map<String, Task> tasksMap = new HashMap()
获取所有对象时,我不希望包含/加载TaskData
字段。 我怎样才能实现它?
PS 与序列化无关。
更新:通过“获取所有对象”我的意思是,例如:
class SomeClass {
Map<String, Task> tasksMap = new HashMap()
SomeClass() {
//...initialize multiple tasks with huge list0, list1..
// => add them all
tasksMap.put("abc0", task);
tasksMap.put("abc1", task);
tasksMap.put("abc2", task);
tasksMap.put("abc3", task);
}
Map<String, Task> tasksMap getMap() {
// when i get all the map's objects, i want the received `Task` objects
// to not have `TaskData` attribute
return tasksMap;
}
}
为该字段指定一个默认值 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;
}
}
我认为另一种方法是创建一个浅拷贝方法,排除您不想要的字段,并在填充 Map 时使用它,例如:
public Task shallowCopy() {
Task newTask = new Task();
newTask.id = id;
newTask.status = status;
...
return newTask;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.