初始化一个对象应该调用main(?)

问题描述 投票:0回答:1

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

然而,事实并非如此。我有一些打印语句在运行 Bakery 驱动程序文件时正在工作,但现在,在移动代码后,这些打印语句不会被执行。有谁知道为什么吗?

我知道MagicBakery main 中的代码在运行时正在工作,并且我得到了预期的输出。

这是代码:

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);
    }
}
java class oop
1个回答
0
投票

你的理解是错误的。构造一个对象会运行 constructor,而不是

main
。仅当您在应用程序的入口点运行该类(或者显式编写
main
)时,Java 运行时才会调用静态
MagicBakery.main(someStringArray)
函数。

就您而言,听起来您希望

MagicBakery
object 能够做一些事情,所以我建议将该类中的
main
更改为类似

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

然后,在你的

BakeryDriver.main
中,你可以写

MagicBakery bakery = new MagicBakery();
bakery.makeCustomerOrder();
© www.soinside.com 2019 - 2024. All rights reserved.