设计模式之单例模式最佳实现方式 (7)

进入EnumSingle.class所在位置,输入javap -p EnumSingle.class命令

Compiled from "EnumSingle.java"

public final class com.hmx.EnumSingle extends java.lang.Enum<com.hmx.EnumSingle> {

 public static final com.hmx.EnumSingle INSTANCE;
 private static final com.hmx.EnumSingle[] $VALUES;

 public static com.hmx.EnumSingle[] values();
 public static com.hmx.EnumSingle valueOf(java.lang.String);

 //文件中同样存在无参构造方法
 private com.hmx.EnumSingle();
 public com.hmx.EnumSingle getInstance();
 static {};
}

第三步:使用jad工具把class文件反编译成Java文件:

进入EnumSingle.class所在位置,输入jad -sjava EnumSingle.class命令

发现EnumSingle类中存在有参构造方法

设计模式之单例模式最佳实现方式

修改创建对象的代码

public static void main(String[] args) throws Exception {

   Constructor constructor = EnumSingle.class.getDeclaredConstructor(String.class,int.class);
   constructor.setAccessible(true);
   EnumSingle instance = (EnumSingle)constructor.newInstance();

}

/*
java.lang.IllegalArgumentException: Cannot reflectively create enum objects
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)

不能通过反射创建枚举单例类型的对象
*/
总结

Enum实现单例模式是最佳的方法!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjjjp.html