【问题标题】:Java hashmap access from different class来自不同类的 Java hashmap 访问
【发布时间】:2019-01-11 23:08:59
【问题描述】:

我在一个类中有一个带有 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"));
}

在 c 类中,我被设置为 null

【问题讨论】:

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

标签: java hashmap


【解决方案1】:

您已经创建了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"));
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多