[英]Java get only certain object fields
I have a POJO which looks like this:我有一个看起来像这样的 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;
}
the lists in TaskData
can be huge (over 100mb). TaskData
的列表可能很大(超过 100mb)。
When getting all objects from Map<String, Task> tasksMap = new HashMap()
I don't want TaskData
fields to be included / be loaded.从
Map<String, Task> tasksMap = new HashMap()
获取所有对象时,我不希望包含/加载TaskData
字段。 How can i achieve it?我怎样才能实现它?
PS It is not related to serialization. PS 与序列化无关。
Update: by "getting all objects" i mean, ex:更新:通过“获取所有对象”我的意思是,例如:
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;
}
}
Give the field a default value of null, then update the value later, using a setter method.为该字段指定一个默认值 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;
}
}
I think another approach would be to create a shallow copy method, excluding the fields you don't want, and use it when populating you Map, eg :我认为另一种方法是创建一个浅拷贝方法,排除您不想要的字段,并在填充 Map 时使用它,例如:
public Task shallowCopy() {
Task newTask = new Task();
newTask.id = id;
newTask.status = status;
...
return newTask;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.