在java中声明实例关键字

use*_*619 4 java

我看到在我的ENUM的java代码声明中声明了一个"instance"关键字.有人解释了这个关键字的工作原理吗?

Java代码: -

public enum TodoDao {
    instance;

    private Map<String, Todo> contentProvider = new HashMap<String, Todo>();

    private TodoDao() {
        Todo todo = new Todo("1", "Learn REST");
        todo.setDescription("Read http://www.vogella.com/articles/REST/article.html");
        contentProvider.put("1", todo);
        todo = new Todo("2", "Do something");
        todo.setDescription("Read complete http://www.vogella.com");
        contentProvider.put("2", todo);
    }
    public Map<String, Todo> getModel(){
        return contentProvider;
    } 
} 
Run Code Online (Sandbox Code Playgroud)

Gee*_*nte 8

根据Joshua Bloch的说法,这是实现GoF单例模式的最佳方式,请参阅相关问题: 在Java中实现单例模式的有效方法是什么?

根据java风格指南,它应该是全部大写,即INSTANCE.

要使用它,您可以从代码的任何部分调用以下内容:

Map<String, Todo> todos = TodoDao.INSTANCE.getModel();
Run Code Online (Sandbox Code Playgroud)

而且您可以确定初始化只会发生一次.


Tom*_*ine 3

这不是一个关键字。它是一个枚举常量,应该大写。无论您从哪里学习 Java,您都应该能够找到这一点。

拥有这样的可变静态实际上是一个非常糟糕的主意。返回一个可变的内部对象也是不好的。