我創建了一個簡單的程序,它使用HashMap在屏幕上輸出值。 這是我不明白的部分。當我在主類中創建一個「Person」對象,並使用Person的對象調用方法「addPerson」時,程序將打印Peter 10 points
。 但是,當我嘗試從另一個班級調用方法時(在我的「幫助」中),我得到一個結果 Peter null points
。 爲什麼「addPersonDifferentMethod」不會將任何參數傳遞給HashMap?有什麼辦法可以實現類似於我在這裏嘗試做的事情嗎?這意味着調用從另一個類中一個類中的方法?(不使用靜態)在另一個類中調用另一個類的方法。幫我理解邏輯
主要類
public static void main(String[] args) {
Person name = new Person();
name.addPerson("Peter",10);
System.out.println("Peter " + name.getMap().get("Peter") + " points");
Person name2 = new Person();
Help help = new Help();
help.addPersonDifferentMethod();
System.out.println("Peter " + name2.getMap().get("Peter") + " points");
}
類人
public class Person {
private HashMap<String, Integer> map = new HashMap<String, Integer>();
public void addPerson(String name, int points){
map.put(name, points);
}
public HashMap<String, Integer> getMap(){
return this.map;
}
}
類幫助
public class Help {
Person name2 = new Person();
public void addPersonDifferentMethod(){
name2.addPerson("Peter", 10);
}
}
只是因爲你叫'Person'在主類,而'你的'Help'類中的Person都是「name2」,並不意味着它是相同的'Person'。 – azurefrog
換句話說,'Main'中的這個「name2」'name2.getMap()。get(「Peter」)'和name2不同。 '幫助' – csmckelvey
因爲name和name2是不同的對象。 –