首页 > 解决方案 > 为了访问java中其他地方的数据,我应该把它放在哪里?

问题描述

我想将来自文件的数据放入变量中,然后我可以方便地在其他地方(在其他类中)访问它。我知道file path并将其读入一个变量。然后我把它放在一个类中。数据不会改变只有一份。

// store data in a static field
public class MyContainer {
  private static Map<String, MyClass> data;
  public static void setData(Map<String, MyClass> data) {
    this.data = data;
  }
  public static Map<String, MyClass> getData(){
    return data;
  }
}

// set data at one place
Map<String, MyClass> data = new HashMap<>();
MyContainer.setData(data);

// access data at other places
MyContainer.getData(data);

虽然上面的代码可以实现这一点,但我认为这很糟糕,因为我可以在将数据分配给它之前访问它。
如何正确实施?

标签: java

解决方案


如果数据从不改变,则在构造函数中设置它并删除 setter。也摆脱static关键字。

public class MyContainer {
    private final Map<String, MyClass> data = new HashMap<>();
    public MyContainer(@Nonnull Map<String, MyClass> data) {
        this.data.putAll(data);
    }
    public Map<String, MyClass> getData(){
        return data;
    }
}

而且您可能想要 return Collections.unmodifiableMap(data);,因此data无法从外部进行修改。


推荐阅读