摘要: 1)自反性 对于任何非null的引用值x,x.equals(x)必须返回true。---这一点基本上不会有啥问题2)对称性 对于任何非null的引用值x和y,当且仅当x.equals(y)为true时,y.equals(x)也为true。 JDK中就有这样的错误。如java.sql.Timestamp对java.util.Date进行了扩展,并且增加了nanoseconds域。Timestamp的equals方法就违反了对称性。 下面我们来分析下这个方法 //Date.java public boolean equals(Object obj) { ... 阅读全文
posted @ 2013-08-25 17:38 chenfei0801 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 一般来说,最好能重用对象而不是每次需要的时候就创建一个相同功能的对象。 1) 对于同时提供了静态工厂方法和构造器的不可变类,通常可以使用静态工厂方法而不是使用构造器,以避免创建不必要的对象。比如说,静态方法Boolean.valueOf(String)几乎总是优先于构造器Boolen(String)。 2) 除了上述的不可变对象,也应该重用哪些已知不会变化的可变对象。比如说Date这个对象,其值一旦计算计算出来就不会变化的,那么如果在一个程序中,我们需要判断某人是否是80后(is80s()),我们没有必要再每个实例的is80s()这个方法里每次都生一个Date对象(这个Date对象就... 阅读全文
posted @ 2013-08-25 15:58 chenfei0801 阅读(270) 评论(0) 推荐(0) 编辑