[英]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.