我创建了一个简单的程序,它使用HashMap在屏幕上打印值。
这是我不明白的部分。当我在主类中创建一个“Person”对象,并使用Person的对象调用方法“addPerson”时,程序将打印Peter 10 points
。
但是,当我尝试从另一个类(在我的情况下为“Help”)中调用该方法时,我得到一个结果
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);
}
}
答案 0 :(得分:0)
addPersonDifferentMethod
类的 Help
方法作用于与Person
中定义的对象不同的main
对象。如果要获得类似的结果,则需要将Person
对象的引用传递给addPersonDifferentMethod
方法,例如将Help
类修改为:
class Help {
public void addPersonDifferentMethod(Person name2){
name2.addPerson("Peter", 10);
name2.addPerson("Martin", 15);
}
}
然后,使用您创建的main
对象从Person
调用该方法:
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(name2);
System.out.println("Peter " + name2.getMap().get("Peter") + " points");