亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 232 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號