我正在尝试找到以下问题的解决方案:
我有很多次创建的类Alert
,它的实例显示为类型为List<Alert>
的字段。
Alert
的一个字段假设使用的是预定义字典的地图(此项永远不会更改)。
如何配置map
以便不必在每次创建Alert
时创建它?
含义:
public class Alerts {
private List<Alert> list;
.
.
.
public Alerts() {
list = new ArrayList<Alert>();
for (...) {
Alert alert = new Alert();
list.add(alert);
}
}
}
public class Alert() {
private String str = "";
.
.
.
public Alert() {
for (int i = 0; i < map.size; i++) {
str += map.get(i); //map is visible and never changes for any
//instance
}
}
}
答案 0 :(得分:3)
听起来这个map
应该是你班级的静态成员。您可以在静态初始化程序块中初始化它。
答案 1 :(得分:1)
如果该类的所有实例都使用相同的数据,则应使用静态字段。此外,你可以使地图不可修改(只是为了确保你 - 或其他人 - 不要搞砸它)。
private static Map<String, String> map = new HashMap<>();
static {
// Insert your keys and values
map.put(key, value);
// Make the map unmodifiable, just in case
map = Collections.unmodifiableMap(map);
}
PS:如果您有Map<Integer, String>
哪些密钥是连续的(0,1,2,3,4 ...),那么请考虑List<String>
,因为列表索引执行与这种情况下的密钥相同的目标。