我正在阅读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/

10-12 03:33