在另一个类中调用一个方法形成一个类。帮助我理解逻辑

时间:2017-03-24 20:15:04

标签: java class methods hashmap

我创建了一个简单的程序,它使用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);
    }
}

1 个答案:

答案 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");