2
List list = new ArrayList();
MyObj mine = new MyObj();
list.add(mine); 

我喜欢在操作对象之前将对象添加到列表中,这样我以后就不会忘记添加它,可能是我在疯狂的丰富逻辑中工作,我更喜欢这种方式

mine.setXXX(stuff);

这是我一直用来在列表中添加对象的方式,

刚才我有一个TreeSet更有意义的用例,所以我很自然地想做这样的事情:-

Set set = new TreeSet();
MyObj mine = new MyObj();
set.add(mine);
mine.setXXX(stuff); // add setters here

但这里的问题是在将对象添加到列表之前需要初始化方法中Treeset使用的变量。compareTo

好的,我可以照顾它。

但我的担心和问题是: - 有没有一种方法可以对可能正在使用我的模型的开发人员强制执行,而我过去常常Treeset不会重复我的错误。即强制他们myObject在将对象添加到集合之前启动变量。虽然开发人员应该知道这一点并且应该照顾它,但仍然有办法强制它或围绕它的一些最佳实践。

4

2 回答 2

5

不,没有通用的方法来执行此操作。最好的方法是把不可变的对象放在集合中,只有不能修改的对象。与其在对象上使用方法,不如setXXX通过构造函数使其可配置且不可编辑。

于 2013-07-26T20:08:11.140 回答
3

很简单:必填字段的值应该在对象的构造函数中传递,并且永远不要提供至少不包含所有必填字段的构造函数。然后你可以在构造函数中设置它们。

于 2013-07-26T20:08:01.400 回答