从不同类访问Java hashmap

从不同类访问Java hashmap,java,hashmap,Java,Hashmap,我在一个类中有一个带有setter和getter的HashMap,当我试图从不同的类访问它时,我得到的是null 如何从不同的类访问HashMap? 这是密码 public class test { private HashMap<String, String> test= new HashMap<String, String>(); public void settest(String key, String value) { tes

我在一个类中有一个带有setter和getter的HashMap,当我试图从不同的类访问它时,我得到的是null

如何从不同的类访问HashMap? 这是密码

public class test {

    private HashMap<String, String> test= new HashMap<String, String>();

    public void settest(String key, String value) {
        test.put(key, value);
    }

    public String gettest(String key) {
        return test.get(key);       
    }

}

public class b{
    test ts=new test();
    ts.settest("location","Chicago");
}


public class c{
    test ts=new test();
    System.out.println(ts.gettest("location"));
}
公共类测试{
私有HashMap test=newhashmap();
公共void settest(字符串键、字符串值){
测试。输入(键、值);
}
公共字符串gettest(字符串键){
返回测试get(key);
}
}
公共b级{
测试ts=新测试();
ts.settest(“地点”、“芝加哥”);
}
公共c类{
测试ts=新测试();
System.out.println(ts.gettest(“位置”);
}

在c类中,我得到的输出为null,您创建了两个不同的
test
类实例,因此它们的hashmap也会不同

我不知道您的最终目标,但一个解决方案是将HashMap定义为静态字段。在本例中,
test
类的这两个实例将使用公共HashMap

您修改的代码:

public class test {

    private static HashMap<String, String> test= new HashMap<String, String>();

    public void settest(String key, String value) {
        test.put(key, value);
    }

    public String gettest(String key) {
        return test.get(key);       
    }

}

public class b{
    test ts=new test();
    ts.settest("location","Chicago");
}


public class c{
    test ts=new test();
    System.out.println(ts.gettest("location"));
}
公共类测试{
私有静态HashMap test=newhashmap();
公共void settest(字符串键、字符串值){
测试。输入(键、值);
}
公共字符串gettest(字符串键){
返回测试get(key);
}
}
公共b级{
测试ts=新测试();
ts.settest(“地点”、“芝加哥”);
}
公共c类{
测试ts=新测试();
System.out.println(ts.gettest(“位置”);
}

test,请看一看(撇开代码不可编译的问题不谈)您创建了两个
test
实例,每个实例都有自己的映射。在一个映射中放置一个键,然后尝试从另一个映射中检索它。类
b
中的变量
ts
与类
c
中的变量
ts
无关。这些是
测试的不同实例。