我正在阅读Joshua Bloch撰写的Effective Java。它使我在第1项中感到困惑
静态工厂方法的第二个优点是,与构造函数不同,不需要每次调用它们时都创建一个新对象。
静态工厂方法不是要在每次调用新对象时创建一个对象吗?
//constructor
Orange(){
}
//static factory method
static Orange staticFactoryMethod(){
return new Orange;
}
不会调用构造函数或
staticFactoryMethod
创建Orange
的实例吗?Orange orange=new Orange();
Orange orange=Orange.staticFactoryMethod();
最佳答案
静态工厂并不总是需要创建新对象。
您可以拥有:
static Orange staticFactoryMethod(){
return new Orange();
}
但是你也可以有类似的东西
static Orange staticFactoryMethod(){
Orange o = ... //find an orange in a basket of available oranges that has been already initialized
return o;
}
关于java - 是否创建新对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16620832/