簡體   English   中英

如何僅使用特定字段創建新的 java object class?

[英]How I create new java object class with only certain field?

我有這樣的 java class:

public class FirstTypeMD extends BaseParams {
    Integer framePerSec;

    public FirstTypeMD(Integer energyCons, Integer mass, Integer tempRange, Boolean electricProtect,
            Boolean radioProtect, Integer framePerSec) {
        super(energyCons, mass, tempRange, electricProtect, radioProtect);

        this.framePerSec = framePerSec;
    }


    public void setFramePerSec(Integer framePerSec) {
        this.framePerSec = framePerSec;
    }

    public Integer getFramePerSec() {
        return framePerSec;
    }

}

當我想創建一個新的 class object 我必須這樣做:

new  FirstTypeMD(energyCons, mass, tempRange, electricProtect, radioProtect, framePerSec)

但我想只傳遞第一個參數,例如:

new  FirstTypeMD(energyCons)

也許我的總體想法是錯誤的,所以我想描述一下我想要做什么。 我正在嘗試過濾此 class 的對象數組。 我現在可以這樣做:

ArrayList<FirstTypeMD> resArr = new ArrayList<FirstTypeMD>(resArr1.stream()
                            .filter(c -> c.electricProtect == elProtect.getSelection()
                                    && c.radioProtect == radProtect.getSelection())
                            .collect(Collectors.toList()));

但例如我想只考慮這個 class 的一個或兩個字段。 當然我可以添加很多代碼並最終解決我的問題,但也許我可以以更好的方式做到這一點?
我有一個想法:創建一些最終FirstTypeMD finalConf; class object 只有重要的字段,而不是嘗試比較對象:

ArrayList<FirstTypeMD> resArr = new ArrayList<FirstTypeMD>(resArr1.stream()
                            .filter(c -> c.electricProtect == finalConf.electricProtect).collect(Collectors.toList()));

但我收到錯誤消息說我沒有一些字段是 null 像這樣:

Cannot invoke "testwizard.wizards.FirstTypeMD.setElectricProtect(java.lang.Boolean)" because "this.this$0.finalConf" is null  

我不知道也許我想要一些不可能的事情,但我決定問你:)

public class Main {
    FirstTypeMD firstTypeMD = new FirstTypeMD(1);
}

class FirstTypeMD extends BaseParams {
    Integer framePerSec;

    public FirstTypeMD(Integer energyCons, Integer mass, Integer tempRange, Boolean electricProtect,
                       Boolean radioProtect, Integer framePerSec) {
        super(energyCons, mass, tempRange, electricProtect, radioProtect);

        this.framePerSec = framePerSec;
    }

    public FirstTypeMD(Integer energyCons) {
       
    }

    public void setFramePerSec(Integer framePerSec) {
        this.framePerSec = framePerSec;
    }

    public Integer getFramePerSec() {
        return framePerSec;
    }
}

在這里我使用了兩個構造函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM