我在理解“static
”时遇到问题。我创建了包含 ArrayList 的“pizzaMenu
”类,其中包含比萨饼。所有披萨都添加到该类中,以后不应修改。但我想访问有关比萨饼的数据。
一切工作正常,但我必须在“main
”中创建“pizzaMenu
”对象才能使其工作。
我如何正确启动此类实例,以便我可以访问它们?但是启动在“main
”中不可见?我想保持“main
”尽可能干净。
最佳答案
but I have to create object of "pizzaMenu" in "main" to make it work.
是的,您需要 new PizzaMenu()
的实例才能访问该菜单的项目。
I'm having problem understanding "static".
PizzaMenu
中的任何内容都不应该是静态
(除了main
,如果你有的话)。但是,它基本上意味着它属于该类,而不是该类的任何一个实例。
换句话说,如果您确实将披萨列表设为静态
,那么就表示所有菜单都有相同的披萨,这不应该是真的,对吧?不同的地方有不同的菜单。
这是一个例子。
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);
}
}
}
All pizzas are added within that class, and it shouldn't be modified later.
例如,您可以使用它
private final List<String> pizzas = Arrays.asList("Cheese", "Pepperoni");
但是,我再次认为不同的菜单实例应该有不同的披萨。
关于java - 访问静态对象而不创建包含它的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43300867/