我推荐的解决方法
使用静态构造函数(c#),或静态初始化块(java)
|
[c#] public class someclass { static someclass(){ init(); types = new hashtable(); types.add(...); types.add(...); } } |
[java] public class someclass { static{ init(); types = new hashmap(); types.put("", ""); types.put("", ""); } } |
效果
1,once,only once
2,定义中对异常处理等有要求,可参考规范
2,多线程时是否有问题,我不清楚,讨论一下
只读代理
问题对象内部有一个集合,由这个对象来控制其元素的增加删除,但客户需要访问该集合取得自己想要的信息,而对象不可能为所有的客户都提供对应的方法,因此需要返回内部的这个集合,但不允许客户增加或删除其元素
我见过的解决方法
| 直接返回代表集合的成员引用,仅在文档中要求客户不能增删集合中的元素
public class someclass { private list attrs; public list getattributes(){ return attrs; } } |