【发布时间】:2017-03-24 20:15:03
【问题描述】:
我创建了一个简单的程序,它使用 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。跨度> -
换句话说,
Main中的这个“name2”name2.getMap().get("Peter")与Help中的这个“name2”name2.addPerson("Peter", 10);不同 -
因为name和name2是不同的对象。
-
我认为你还应该阅读更多关于类建模的内容,因为
Person name = new Person(); name.addPerson("Peter",10);看起来真的很可怕......
标签: java class methods hashmap