gpt4 book ai didi

java - 访问静态对象而不创建包含它的类的实例

转载 作者:行者123 更新时间:2023-11-30 02:35:07 24 4
gpt4 key购买 nike

我在理解“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com