不通过 new (如:Date date = new Date();) 而是用一个静态方法来对外提供自身实例的方法叫做静态工厂方法(Static factory method)(如:Integer number = Integer.valueOf("3");)[new 的作用是 在用 new 构造一个新的类实例时 是告诉 JVM JVM 自动在内存中开辟一个空间 调用构造函数初始化成员变量 最终引用返回给调用方]
1.它们有名称
2.不必要每次创建的时候都新创建一个对象(省内存)
3.可以返回原返回类型的任何子类型的对象(里式替换)
4.所返回对象的类可以随着每次调用而发生变化 取决于静态工厂方法的参数值
5.方法返回的对象所属的类在编写包含该静态工厂方法的类时可以不存在(如:Map<String, Date> mp = new HashMap<>();)
1.类如果不含有共有的或受保护的构造器 就不能被子类化
2.难以发现
静态方法惯用名称:
from:类型转换方法 只有单个参数返回是一个对应的实例 Date d = Date.from(instant); // Date 转化为时间戳
of:聚合方法 Set<Rank> faceCards = EnumSet.of(JACK, QUEEN, KING);
valueof:一种替代方法 BigInteger prime = BigInteger.valueOf(Integer.MAX_VALUE);
原文:https://www.cnblogs.com/zlrrrr/p/11311854.html