不好意思再度打擾了 想請教一下為何最後所print的倆人會有一樣的收藏阿? (目前在練習寫pokemon小遊戲的交易method 我是用Trainer (String Trainer_name,HashSet trainer_collection) 來代表一個訓練師(姓名,收藏) 然後寫的add跟remove都有測試過能正常增減pokemon)
下面附上檔案的google drive連結:
https://drive.google.com/open?id=1vvoaIEtyA-w36E-E7ZD8yvEoxjQk6_ih
by 剛學java3週的菜鳥
節錄部分的程式碼
public class Trainer {
public static HashSet<Monster> trainer_collection;
public HashSet<Monster> getcollection() {
return trainer_collection;
}
public static boolean addMonster (Monster monster) {
if(Trainer.trainer_collection.contains(monster)) {
System.out.println("Monster exits!!!");
return false;
}
else {
Trainer.trainer_collection.add(monster);
System.out.println("Monster added !!");
return true;
}
}
這一行你用了靜態成員 public static HashSet<Monster> trainer_collection;
,所以每一個 trainer 實例都會參考到相同的 trainer_collection
。應該要宣告成 priavte HashSet<Monster> trainer_collection;
。