话不多说,直接上代码:
Java代码:
这里非常的简单,在使用 EnumSingleton的instance对象时一定会是单例。
public enum EnumSingleton {
INSTANCE;
}
反编译后的代码:
public final class EnumSingleton extends Enum {
//关注这一行,这里很明显是单例模式的懒汉式的写法,直接创建这个对象,无论你是否需要
public static final EnumSingleton INSTANCE = new EnumSingleton("INSTANCE", 0);
// $FF: synthetic field
private static final EnumSingleton[] $VALUES = new EnumSingleton[]{INSTANCE};
public static EnumSingleton[] values() {
return (EnumSingleton[])$VALUES.clone();
}
public static EnumSingleton valueOf(String name) {
return (EnumSingleton)Enum.valueOf(EnumSingleton.class, name);
}
private EnumSingleton(String var1, int var2) {
super(var1, var2);
}
}
这里是使用的 fernflower 进行的反编译
github地址 :https://github.com/fesh0r/fernflower
下载地址:http://the.bytecode.club/fernflower.jar
使用的命令:
java -jar fernflower.jar den EnumSingleton.class .