有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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是不同的对象。我没有得到“每次调用时不需要创建新对象”的上下文


共 (2) 个答案

  1. # 1 楼答案

    就像所有事情一样,程序完全按照你的要求执行。如果静态方法每次调用时都使用“new”;然后每次创建新对象

    unlike constructors static factory methods are not required to create a new object each time they're invoked"的意思是,您的代码可以决定不调用new;但例如,返回一个“缓存”对象

    意思是:当你使用“新”;你调用构造函数;Java的语义导致了新对象的创建。没有办法阻止had,它与语言紧密相连

    但是当你使用静态方法时,你定义了该方法的语义

  2. # 2 楼答案

    在这里,你正在创建新的对象

    return new Car("red");  
    

    静态工厂方法将用于第一次创建对象一次,然后在下次从静态工厂方法返回时返回相同的实例