在java中声明实例关键字

在java中声明实例关键字,java,Java,我在枚举的java代码声明中看到一个“instance”关键字。有人能解释一下这个关键字是如何工作的吗 Java代码:- public enum TodoDao { instance; private Map<String, Todo> contentProvider = new HashMap<String, Todo>(); private TodoDao() { Todo todo = new Todo("1", "Lea

我在枚举的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;
    } 
} 
public enum TodoDao{
实例;
私有映射contentProvider=newhashmap();
私人TodoDao(){
Todo Todo=新Todo(“1”,“学习休息”);
todo.setDescription(“读取http://www.vogella.com/articles/REST/article.html");
contentProvider.put(“1”,待办事项);
todo=新的todo(“2”,“做点什么”);
todo.setDescription(“读取完成http://www.vogella.com");
contentProvider.put(“2”,待办事项);
}
公共地图getModel(){
返回内容提供者;
} 
} 

这不是一个关键词。它是一个枚举常量,应该是大写的。无论您在哪里学习Java,您都应该能够发现这一点


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

如果您事先知道实例的数量,那么假设您使用
枚举而不是类

枚举用作固定数量的常量类型:

例如

实例是TodoDao类的公共静态最终字段,和所有静态字段一样,它们可以通过类名访问,如

TodoDao b1=TodoDao.INSTANCE

这里的实例是最终的静态内部类


阅读更多信息:

根据Joshua Bloch的说法,这是实现GoF单例模式的最佳方式,请参见相关问题:

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

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

Map<String, Todo> todos = TodoDao.INSTANCE.getModel();
Map todos=TodoDao.INSTANCE.getModel();

您可以确定初始化只会发生一次。

我在任何地方都看不到实例。此外,关键字是
instanceof
这不是关键字,它是一个常量。此响应应获得第一名!
Map<String, Todo> todos = TodoDao.INSTANCE.getModel();