为了账号安全,请及时绑定邮箱和手机立即绑定

Java 仅获取某些对象字段

Java 仅获取某些对象字段

跃然一笑 2022-06-23 17:56:36
我有一个看起来像这样的 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;   }}
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

给该字段一个默认值 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;

    }

}


查看完整回答
反对 回复 2022-06-23
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

我认为另一种方法是创建一个浅拷贝方法,排除您不想要的字段,并在填充 Map 时使用它,例如:


  public Task shallowCopy() {

    Task newTask = new Task();

    newTask.id = id;

    newTask.status = status;

    ...

    return newTask;

  }


查看完整回答
反对 回复 2022-06-23
  • 2 回答
  • 0 关注
  • 259 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号