240 发简信
IP属地:上海
  • 10.始终要覆盖toString

    在出现异常的时候,直接调用 toString方法打印当中的属性值,要比输出一个xxxx@xxx 这种东西有用的太多

  • 9.覆盖equlas时必须覆盖hashCode

    如果覆盖equals时如果不覆盖hashCode 那么在hasmMap,hashSet,和hashtable等作为Key值,两个逻辑相同的对象会...

  • 8.覆盖equals请遵守通用约定

    什么时候该覆盖equals?简单来说,需要对象比较逻辑相等(不是对象相等的意思) ,并且超类没有满足条件。比如:Integer或者Date。 覆...

  • 7.避免使用终结方法

    终结方法(finalizer)通常是不可预测的,也是很危险的,一般情况下是不必要使用它的。使用终结方法会导致行为不稳定,降低性能,以及可移植性的...

  • 6.消除过期的对象引用

    我们用java管理内存是十分容易的,因为jvm会帮我管理内存的释放,但是这不意味着我们不用担心内存的事情了 造成内存泄漏的地方一般来说有三个: ...

  • 5.避免创建不必要的对象

    一般来说,如果能重用对象,尽量重用对象,而不是创建一个相同的对象.如果对象是不可变的,它始终就应该被重用. 作者举了非常多的反面例子 Strin...

  • 4.通过私有构造器强化不可实例化的能力

    一些工具类是不可以被实例化的,比如内部全是静态成员的类如java.lang.Math,java.util.Collections或者apache...

  • 3.用私有构造器或者枚举类型强化Singleton属性

    在我们通常的单例方法中,通常有两种方法来击穿单例,反射和序列化 使用单元素枚举可以有效的解决这两个问题(在最后) 反射击穿单例 这是一个普通的单...

  • 2.遇到多个构造器参数时要考虑用构建器(Builder)

    当一个类中的部分参数可选,部分参数必填的时候,我们会如何写这个类呢 使用构建器 构造器调用会使用很多我们根本不会用到的参数,但是还是不得不用,这...