代码之家  ›  专栏  ›  技术社区  ›  António Rebelo

初始化对象时应调用main(?)

  •  0
  • António Rebelo  · 技术社区  · 1 年前

    我正在为大学做一个项目,我们被告知将以前在“Bakery Driver”类的主代码移到名为“Magic Bakery”的文件中的另一个类(也将其放在主代码中)。在Bakery Driver的main中,要创建Magic Bakery类的对象,因此输出应该相同(因为MagicBakery的main中的代码应该在创建对象时执行)。

    然而,事实并非如此。我有一些打印语句在运行Bakery Driver文件时有效,但现在,在移动代码后,这些打印语句不会执行。有人知道为什么吗?

    我知道MagicBakery的主要代码在运行时正在工作,我得到了预期的输出。

    这是代码:

    BakeryDriver.java

    import bakery.MagicBakery;
    
    public class BakeryDriver {
    
        public BakeryDriver() {
        }
    
        public static void main(String[] args)  {
            MagicBakery bakery = new MagicBakery();
    
    
        }
    
    }
    

    MagicBakery.java

    
    package bakery;
    
    import java.util.ArrayList;
    
    public class MagicBakery{
        public MagicBakery(){
        }
    
        public static void main(String[] args){
            Ingredient flour = new Ingredient("flour");
            Ingredient sugar = new Ingredient("sugar");
            Ingredient egg = new Ingredient("egg");
            
            System.out.println(flour.toString());
            System.out.println(sugar.toString());
            System.out.println(egg.toString());
    
            ArrayList<Ingredient> recipe_test = new ArrayList<Ingredient>();
    
            recipe_test.add(flour);
            recipe_test.add(sugar);
            recipe_test.add(egg);
    
            Layer layer_test = new Layer("testing yo", recipe_test);
    
            System.out.print(layer_test.getRecipeDescription());
    
            CustomerOrder order_test = new CustomerOrder("test", recipe_test, recipe_test, 0);
        }
    }
    
    1 回复  |  直到 1 年前
        1
  •  2
  •   Silvio Mayolo    1 年前

    你的理解是错误的。构造对象将运行 构造函数 main 。静态 主要的 只有当您在应用程序的入口点运行该类时(或者如果您显式地编写 MagicBakery.main(someStringArray) ).

    在你的情况下,听起来你想要 MagicBakery 对象 能够做一些事情,所以我建议改变你的 主要的 在那个班上

    public CustomerOrder makeCustomerOrder() {
      // Method body ...
    }
    

    然后,在您的 BakeryDriver.main ,你可以写

    MagicBakery bakery = new MagicBakery();
    bakery.makeCustomerOrder();