java静态工厂方法每次调用时都会创建一个新对象
在有效的Java中,its提到“与构造函数不同,静态工厂方法不需要在每次被调用时创建新对象”
class Car{
String color;
Boolean spoiler;
public Car(String s){
color=s;
spoiler = false;
}
public static Car redCar(){
return new Car("red");
}
}
在主要课堂上:
Car c2 = Car.redCar();
Car c3 = Car.redCar();
c2和c3是不同的对象。我没有得到“每次调用时不需要创建新对象”的上下文
# 1 楼答案
就像所有事情一样,程序完全按照你的要求执行。如果静态方法每次调用时都使用“new”;然后每次创建新对象
unlike constructors static factory methods are not required to create a new object each time they're invoked"
的意思是,您的代码可以决定不调用new;但例如,返回一个“缓存”对象意思是:当你使用“新”;你调用构造函数;Java的语义导致了新对象的创建。没有办法阻止had,它与语言紧密相连
但是当你使用静态方法时,你定义了该方法的语义
# 2 楼答案
在这里,你正在创建新的对象
静态工厂方法将用于第一次创建对象一次,然后在下次从静态工厂方法返回时返回相同的实例