进入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实现单例模式是最佳的方法!