簡體   English   中英

在Java字段中執行代碼

[英]execute code in java fields

我處於將靜態字段變量引用到自定義類的位置。 我需要使用其引用的類中的方法對變量進行更改。 我無法實例化正在構建的課程。 簡化示例:

public class House {
  private static MaterialsRequired matsReq = new MaterialsRequired();
  private String size;

  private House(String size) {
    this.size = size;
  }

  public static MaterialsRequired getMaterialsRequired() {

  }

  public static void Build(String size) {
    new House(size); //Do I need to put 'this(size)' here?
    //some code here to expend the materials required factored based on size.
  }

要建造房屋,我需要知道所需的材料(標准尺寸)。 要了解所需的材料,我需要調用MaterialsRequired的addMaterial()方法。 我該怎么辦?

編輯:我需要在matsReq上反復調用addMaterial()方法。 也許十次。 當我調用House.build()時,我希望通過方法調用更改matsReq(如果我的問題不確定)。 同樣,每次調用build()或getMaterialsRequired()方法時僅設置所需的材料也令我不滿意。

問題已經回答! 解:

  private static MaterialsRequired matsReq = new MaterialsRequired();
  static {
    matsReq.addMaterial(mat1);
    matsReq.addMaterial(mat2);
    matsReq.addMaterial(mat3);
  }
  private String size;

擁有構建方法不起作用,因為它只是另一個構造函數。 創建實例時會發生這種情況。 我猜,如果有的話,您的成長將超出班級范圍。 這將是所謂的構造函數,並做了其他幾件事。

您可能想要的是,在類之外,使用一種方法來創建房屋的實例(使用構造函數),然后使用一些代碼“用完”從容納物料的結構中建造房屋所需的物料(再次) ,在課程之外)。

由於您似乎想建造具有不同材料要求的房屋,所以為什么不創建具有不同要求材料清單的最基本房屋的子類(或者更好的是,抽象類,也可能稱為“住宅”)。

做一些猜測...

public class StandardHouse{
  public static MaterialsList MATERIALS_REQUIRED = new MaterialsList();
  MATERIALS_REQUIRED.add("material", numMats);
  ...

  public StandardHouse() {
    //probably don't need anything here
  }
}

然后再

MaterialsList matsYouHave = ...;
StandardHouse house1 = new StandardHouse();
matsYouHave.remove(StandardHouse.MATERIALS_REQUIRED);

嘗試將它們分為兩類

public class House {

  private List<String> materialList = new ArrayList<String>();
  private House(List<String> materialList ) {
    this.materialList = materialList ;
  }



  public void Build() {
    MaterialsRequired matsReq = new MaterialsRequired();
    materialList .add(matsReq.setMaterialsRequired("material1"));
    materialList .add(matsReq.setMaterialsRequired("material2"));
    materialList .add(matsReq.setMaterialsRequired("material3"));
    //some code here to expend the materials required factored based on size.
  }

接着

class MaterialRequired
 {
    private String materialsRequired;

    public String setMaterialsRequired(String material) {
        materialRequired = material;
        return materialRequired;
  }

暫無
暫無

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

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