List list = new ArrayList();
MyObj mine = new MyObj();
list.add(mine);
Run Code Online (Sandbox Code Playgroud)
我喜欢在操作对象之前将对象添加到列表中,这样我以后就不会忘记添加它,可能是我在疯狂的浓缩逻辑中工作,我喜欢这样的方式
mine.setXXX(stuff);
Run Code Online (Sandbox Code Playgroud)
这是我一直用来在列表中添加对象的方式,
刚才我有一个TreeSet更有意义的用例,所以我自然想做这样的事情: -
Set set = new TreeSet();
MyObj mine = new MyObj();
set.add(mine);
mine.setXXX(stuff); // add setters here
Run Code Online (Sandbox Code Playgroud)
但是这里的问题是在将对象添加到列表之前Treeset需要在compareTo方法中使用变量进行初始化.
好的,我可以照顾它.
但我的担忧和问题是: - 有没有办法可以强制开发人员可能正在使用我的模型,而我以前Treeset不会重复我的错误.即myObject在将对象添加到集合之前,让它们引发变量.虽然开发人员应该知道这一点,并且应该照顾它,但仍然有办法迫使它或一些最佳实践.
不,没有通用的方法来强制执行此操作.执行此操作的最佳方法是将不可变对象放入仅无法修改的集合中.而不是setXXX在您的对象上有一个方法,使其可以通过构造函数进行配置,而不是可编辑的.
| 归档时间: |
|
| 查看次数: |
1334 次 |
| 最近记录: |