我正在为大学做一个项目,我们被告知将以前在“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);
}
}
你的理解是错误的。构造一个对象会运行 constructor,而不是
main
。仅当您在应用程序的入口点运行该类(或者显式编写 main
)时,Java 运行时才会调用静态 MagicBakery.main(someStringArray)
函数。
就您而言,听起来您希望
MagicBakery
object 能够做一些事情,所以我建议将该类中的 main
更改为类似
public CustomerOrder makeCustomerOrder() {
// Method body ...
}
然后,在你的
BakeryDriver.main
中,你可以写
MagicBakery bakery = new MagicBakery();
bakery.makeCustomerOrder();