读书笔记1(Effective java)

来源:互联网 发布:设计印章的软件 编辑:程序博客网 时间:2024/06/07 09:22

创建和销毁对象

------------《考虑用静态工厂方法代替构造器》

优势:

1.有名称。

2.避免了每次调用他们都创建一个新的对象。

例子:

   public static Boolean valueOf(boolean b) {        return (b ? TRUE : FALSE);    }
3.可以返回原类型的任何一个子类型对象

例子:

 public static <E extends Enum<E>> EnumSet<E> noneOf(Class<E> elementType) {        Enum[] universe = getUniverse(elementType);        if (universe == null)            throw new ClassCastException(elementType + " not an enum");        if (universe.length <= 64)            return new RegularEnumSet<E>(elementType, universe);        else            return new JumboEnumSet<E>(elementType, universe);    }

  进一步解释:这样使用者就不关心到底要返回什么子类,只需要知道返回的是某个子类就可以了,具体实现和判断在父类中进行实现,从而有一天需要对所使用子类进行修改时不会引起代码大的冲突

4.创建一个参数化类型实例时,可以简化代码

缺点:

1.类如果不含有公有的或者受保护的构造器,就不能被继承。

2.与其他的静态方法没有区别,想具体的查看如何实体化一个类不方便。