不好意思再度打擾了 想請教一下為何最後所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;。