在学习设计模式时,单例模式有一种方式是通过枚举实现的,这里就以是实现单例模式为例来学习枚举。
Java 中的每一个枚举都继承自 java.lang.Enum 类。当定义一个枚举类型时,每一个枚举类型成员都可以看作是 该枚举类的 实例,这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。
所有枚举实例都可以调用该枚举类的方法。
枚举类型还可以自定义构造方法与toString()方法
enum Singleton {
SINGLETON;//这个枚举成员相当于一个Singleton实例
/*Java 中的每一个枚举都继承自 java.lang.Enum 类。当定义一个枚举类型时,每一个枚举类型成员都可以看作是 该枚举类的 实例,这些枚举成员默认都被 final、public, static 修饰,当使用枚举类型成员时,直接使用枚举名称调用成员即可。
所有枚举实例都可以调用该枚举类的方法
* */
public void sayMethod() {
System.out.println("lets do sth");
}
public static void main(String[] args) {
//枚举方式实现单例模式
Singleton singleton = Singleton.SINGLETON;
Singleton singleton2 = Singleton.SINGLETON;
// 枚举实例调用该枚举类中的成员方法
singleton.sayMethod();
//比较他们的hashcode值,发现都一样
System.out.println(singleton.hashCode());//591137559
System.out.println(singleton2.hashCode());//591137559
System.out.println(singleton.getClass());//class Singleton
System.out.println(singleton.name());//SINGLETON
}
}