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

时间:2017-04-08 22:11:48

标签: java

我在理解“static”时遇到了问题。我创建了包含ArrayList的类“pizzaMenu”,其中包含比萨饼。所有比萨都在该类中添加,不应在以后修改。但我想访问有关比萨饼的数据。

一切正常,但我必须在“pizzaMenu”中创建“main”对象才能使其正常工作。

如何正确启动此类实例,以便我可以访问它们?但是在“main”中不会显示启动?我想让“main”保持尽可能干净。

2 个答案:

答案 0 :(得分:2)

  

但我必须在“main”中创建“pizzaMenu”的对象才能使其正常工作。

是的,您需要 new PizzaMenu()的实例才能访问该菜单的项目。

  

我在理解“静态”时遇到了问题。

PizzaMenu中的任何内容都不应该staticmain除外,如果你有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的概念并不完全正确。