您现在的位置是:首页 > 文章详情

关注对象的new

日期:2018-07-18点击:487

对象创建得不好,会引发OOM,和常见的代码难维护问题。

优先通过静态方法替换构造器

通过静态方法而不是构造器的优势

Maps.newHashMap(); public static <K, V> HashMap<K, V> newHashMap() { return new HashMap<K, V>(); }

1:有方法名可以用来区分场景(valueof,of,getInstance,newInstance,getXXX,newXXX)
2:帮助复用对象(valueof,of)和单例(getInstance)
3:通过声明接口可以返回任意实现类
4:减少多余的范型声明

劣势
1:静态方法往往配合私有构造器,导致类本身无法extends
2:调用的时候没有语法支持,无法快速识别这是一个构造方法

Builder

当有多个构造器的常见的时候,用Builder模式。

public class Person { private final String name; private final int age; private Person(Builder builder) { this.name = builder.name; this.age = builder.age; } public static class Builder{ private String name; private int age; public Builder(String name){ this.name=name; } public Builder age(int age){ this.age = age; return this; } public Person build(){ return new Person(this); } } }

复用对象

1:可以“string”的时候,不要new String(“string”)
2:对象是不可变是,能不new 的尽量共同同一个。参考数据库连接池
3:能long的时候,不要用Long,避免触发装箱拆箱产生多余消耗
4:当对象是pojo是,不要为了复用反复拷贝。

对象无用的时候,记得消除对象的引用

array[i] = null;可以让gc有效

单例的创建

1:final static instance配合private 构造函数{throw new Runtime();}
2:单个的枚举本身
3:扩展的provider 模式,如guice ,spring,guava等包装过的单例

原文链接:https://yq.aliyun.com/articles/614427
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章