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

标签 java

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

相关文章:

java - 如何动态更改抽屉导航的标题布局背景颜色?

java - ICEfaces 2.0.0 + View 范围 + 绑定(bind)

java - 奇怪的 SQLite 行为 - 非功能性 UPDATE SQLite 方法

Java EE webapp 不创建文件/文件夹

java - 从父 Activity 访问 Fragment 对象

java - 在java中执行外部命令

java - 如何通过 Java 8 中的 FileSystem 类连接外部文件系统?

java - 将我想在 Eclipse 中使用的文本文件放在哪里?

java - 在多个线程中使用 forEach() 或使用 forEach() 和 lambda 进行集合迭代

java - Maven阴影插件构建的无效或损坏的JAR文件