我在理解“static
”时遇到了问题。我创建了包含ArrayList的类“pizzaMenu
”,其中包含比萨饼。所有比萨都在该类中添加,不应在以后修改。但我想访问有关比萨饼的数据。
一切正常,但我必须在“pizzaMenu
”中创建“main
”对象才能使其正常工作。
如何正确启动此类实例,以便我可以访问它们?但是在“main
”中不会显示启动?我想让“main
”保持尽可能干净。
答案 0 :(得分:2)
但我必须在“main”中创建“pizzaMenu”的对象才能使其正常工作。
是的,您需要 new PizzaMenu()
的实例才能访问该菜单的项目。
我在理解“静态”时遇到了问题。
PizzaMenu
中的任何内容都不应该static
(main
除外,如果你有static
那么)。但是,它基本上意味着它属于类,而不是该类的任何一个实例。
换句话说,如果您确实制作了比萨饼public class PizzaMenu {
private List<String> pizzas = new ArrayList<>();
public void add(String name) {
pizzas.add(name);
}
public List<String> getPizzas() {
return pizzas;
}
// You can also move this to another class
public static void main() {
PizzaMenu menu = new PizzaMenu();
menu.add("Cheese");
for (String pizza : menu.getPizzas()) {
System.out.println(pizza);
}
}
}
的列表,那就说所有菜单都有相同的比萨饼,这不应该是真的,对吗?不同的地方有不同的菜单。
这是一个例子。
private final List<String> pizzas = Arrays.asList("Cheese", "Pepperoni");
所有比萨都在该类中添加,不应在以后修改。
您可以使用此功能,例如
ModelName::where()->first();
但是,我认为不同的菜单实例应该有不同的比萨饼。
答案 1 :(得分:0)
您可以在pizzamenu中将比萨声明为公共静态。
public final static List<pizza> pizzas;
所以你可以使用
访问披萨PizzaMenu.pizzas.
你也提到了
我想保持&#34;主要&#34;尽可能干净。
我认为您关于clean code
的概念并不完全正确。