如果类Foo有一个hashmap,即:
public class Foo {
private HashMap <String, Integer> fooMap;
//other foo methods
}
当封装fooMap时,fooMap应该将其方法包装起来的情况如下所示:
public class Foo {
private HashMap<String, Integer> fooMap;
//other foo methods
public int getFoo(String s) {
return fooMap.get(s);
}
//other wrapper methods
}
或让fooMap自行返回:
public class Foo {
private HashMap<String, Integer> fooMap;
//other foo methods
public HashMap<String, Integer> getFooMap() {
return fooMap;
}
}
答案 0 :(得分:0)
一般来说暴露你的字段是一个坏主意,我建议你返回map()的副本而不是真正的引用。随着你的代码的增长,你不能总是遵循流程可以采取的其他一些路径对象可能会将您的Foo对象映射传递给其他将添加值的对象,并且需要几天的时间才能了解出错的地方。以下是我在此主题http://javarevisited.blogspot.co.il/2012/03/private-in-java-why-should-you-always.html和Why encapsulation is an important feature of OOP languages?
上找到的一些链接