gpt4 book ai didi

java - 加载类时静态方法是否创建对象

转载 作者:行者123 更新时间:2023-11-30 09:17:17 25 4
gpt4 key购买 nike

public class FactoryProducer {

public static AbstractFactory getFactory(String choice){

if(choice.equalsIgnoreCase("ENTITIES")){
System.out.println("entities factory created with out calling");
return new LoadEntityFactory();
}
elseif(choice.equals.IgnoreCase("UNITS"))
return new UnitFactory();


}


}

加载实体类

public class LoadEntityFactory extends AbstractFactory {

@Override
public loadEntities getLoadEntity(String entity) {
if(entity==null){
return null;
}else if (entity.equalsIgnoreCase("categories")) {

return new LoadCategoryEntity();
}
else if (entity.equalsIgnoreCase("books")) {
return new LoadBookEntity();
}
else if (entity.equalsIgnoreCase("author")) {
return new LoadAuthorEntity();
}
else if (entity.equalsIgnoreCase("publisher")) {
return new LoadPublisherEntity();
}

return null;
}

}

现在我的问题是,当我调用 FactoryProducer.getFactory("entities") 时,它是否会创建三个对象,当类加载到 JVM 中时会创建两个对象(实体和单元),当我调用静态方法时会创建一个对象?

最佳答案

所有方法只有在被调用时才会执行。不在类加载上。如果您想在加载类时执行某些操作,请使用静态初始化程序 block 。

When I call FactoryProducer.getFactory("entities").Will it create three objects, two objects(entity and unit) will be created when class is loaded into JVM and one when I call the static method?

  • getFactory 方法只有在被调用时才会执行。不是在加载类时。
  • 当您传递 "entities" 时,第一个 if 条件将为真,并且 LoadEntityFactory 将在使用 调用时实例化新的 LoadEntityFactory
  • else 条件将不为真,因此将不会调用 new UnitFactory 并且不会创建 UnitFactory 对象。

关于java - 加载类时静态方法是否创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19048225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com