字典作为类的不同实例的参考

时间:2015-03-16 10:44:29

标签: java dictionary

我正在尝试找到以下问题的解决方案: 我有很多次创建的类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
        }
    }
}

2 个答案:

答案 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>,因为列表索引执行与这种情况下的密钥相同的目标。