java - 为了访问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);
虽然上面的代码可以实现这一点,但我认为这很糟糕,因为我可以在将数据分配给它之前访问它。
如何正确实施?
解决方案
如果数据从不改变,则在构造函数中设置它并删除 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
无法从外部进行修改。
推荐阅读
- modx - 如何向内容添加新类别
- typescript - Jest 自定义测试环境找不到绝对导入路径
- r - 在 R-shiny 服务器上安装“officer”包
- excel - 索引匹配中的间接引用
- ruby-on-rails - 在 Rails 中运行搜索功能将输出所有值
- excel - 如何提取列中的特定数据并使用 VBA 在另一列中解析它
- tsql - SQL Server 从 TSQL 创建日期
- node.js - 应用程序错误 - 部署到 Heroku 后我收到一条错误消息,即使我的应用程序在开发中运行良好
- java - JPA:在 where 子句和 Case 语句中一起使用列表 - 有没有办法循环?
- python - 如何从 Python 中的字符串中提取多个浮点值