Java编码规范-创建和销毁对象

  • 使用static factory 方法取代构造方法(Consider static factory methods instead of constructors)
  • 当构造方法参数很多时考虑使用builder (Consider a builder when faced with many constructor parameters)
  • 单例模式的属性用私有的构造方法或者是一个enum 类型初始化(Enforce the singleton property with a privagte constructor or an enum type)
  • 不能实例化的类要创建一个私有的构造方法(Enforce noninstantiability with a private constructor)
  • 选择依赖注入而非硬链接资源(Prefer dependency injection to hardwiring resources)
  • 避免创建无用的对象(Avoid creating unnescessary objects)

      ① 避免调用构造方法创建对象,使用静态工厂方法 (如 Boolean.valueOf(String), 而不用 Boolean(String))。

       String s = new String("bilibili"); // 不可取

       String s = "bilibili"; //应该这样写

       ②cache开销大的对象。

       ③类似Map.keySet这种方法,每调用一次就会产生一个Set对象,所以对于一个Map对象没有必要调用多次keySet.

       ④自动装箱。尽量使用基本数据类型,而非包装类型。

  • 减少过时对象引用

       ① 当一个元素被释放掉之后,任何该元素包含的引用对象都应该被置为null。比如pop之后,将栈该地址置为null。

       ② cache 的对象当变得不相关之后 很容易被遗忘,没有清理掉

       ③ 监听和回调。比如一个API注册了回调但是并没有取消回调,会导致内存一致占用,一种解决方法是将callback存为WeakHashMap的key。

  • 避免finalizers 和 cleaners

       ① finalizers 无法预测,通常很危险,一般情况下没必要存在。

       ② Java9中用cleaners替代了finalizers,因为cleaners比finalizers危险性低,但是仍然无法预测,性能低,也没有必要存在。

  • 使用try-with-resources 而非 try-finally

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值