簡體   English   中英

Java枚舉器

[英]Java enum getter

在這里,我將不勝感激。

執行以下代碼,Buyer2 ID始終會覆蓋Buyer1 ID。 意味着我總是得到ID = 2。 我不確定以下代碼有什么問題。 我認為這是我的枚舉,並且get方法始終保留最后一個值。

Buyer bOne = new Buyer("buyer1", 1); 
Buyer bTwo = new Buyer("buyer2", 2);

其余代碼:

public enum Fruits {
    Banana("banana", "B"),
    Apple("apple","A"),
    Orange("orange","O");

    private String type, ID;

    private Fruits(String type, String ID){
        this.type = type;
        this.ID = ID;
    }

    public String getType() {
        return type;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID){
        this.ID = ID;
    }
}

public class Player {
    private String name;
    private Fruits banana, apple, orange;

    private int ID;

    public buyer(String name, int ID) {
        this.name = name;
        this.ID = ID;
        banana = Fruits.Orange;
        apple = Fruits.Apple;
        orange = Fruits.Orange;

        banana.setID("B"+ID);
        apple.setID("A"+ID);
        Orange.setID="O"+ID;
    }
}

謝謝

您的Fruits枚舉是可變的,可能不是您想要的。 Fruits上的setID()方法可能是設計錯誤。 由於不同的水果(香蕉,蘋果等)是一個實例,可以通過您的所有程序共享,因此它們需要反映某些globabl狀態,而不是特定於買方的狀態。

嘗試刪除此設置器,看看是否可以重構代碼...

Fruits.java

package test;

public enum Fruits {

    Banana("banana", "B"), Apple("apple", "A"), Orange("orange", "O");

    private String type, ID;

    private Fruits(String type, String ID) {
        this.type = type;
        this.ID = ID;

    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getID() {
        return ID;
    }

    public void setID(String iD) {
        ID = iD;
    }
}

Buyer.java

   package test;
    public class Buyer {
    private String name;
    private Fruits banana, apple, orange;

    private int ID;


    public Buyer(String name, int ID) {
        this.name = name;
        this.ID = ID;
        banana = Fruits.Orange;
        apple = Fruits.Apple;
        orange = Fruits.Orange;

        banana.setID("B"+ID);
        apple.setID("A"+ID);
        orange.setID("O"+ID);

    }
    public static void main (String  []args){

            Buyer bOne = new Buyer("buyer1", 1); 
    System.out.println("id = " + bOne.ID + " name =" + bOne.name);
    Buyer bTwo = new Buyer("buyer2", 2);
    System.out.println("id = " + bTwo.ID  + " name =" + bTwo.name);
    }
    }

結果在consol上:

id = 1名稱= buyer1

id = 2名稱= buyer2

也許檢查你的最后一行:)

Orange.setID="O"+ID; -> orange.setID="O"+ID;

保證枚舉的每個實例僅被構造一次,因此,保留了最后一個值。

暫無
暫無

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

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