美文网首页
枚举单例

枚举单例

作者: 紫色红色黑色 | 来源:发表于2019-11-18 14:28 被阅读0次

描述

本文先反编译枚举,再使用枚举实现单例

枚举


public enum EnumDemo {

    RED("red"),BLUE("blue"),PURPLE("purple");

    private String dest;

    EnumDemo(String dest) {
        this.dest = dest;
    }

    public static void getColor() {
        return;
    }
}
java -jar cfr-0.146.jar EnumDemo.class --sugarenums false
/*
 * Decompiled with CFR 0.146.
 */
package com.redoor.singleton;

public final class EnumDemo
extends Enum<EnumDemo> {
    public static final /* enum */ EnumDemo RED = new EnumDemo("RED", 0, "red");
    public static final /* enum */ EnumDemo BLUE = new EnumDemo("BLUE", 1, "blue");
    public static final /* enum */ EnumDemo PURPLE = new EnumDemo("PURPLE", 2, "purple");
    private String dest;
    private static final /* synthetic */ EnumDemo[] $VALUES;

    public static EnumDemo[] values() {
        return (EnumDemo[])$VALUES.clone();
    }

    public static EnumDemo valueOf(String name) {
        return Enum.valueOf(EnumDemo.class, name);
    }

    private EnumDemo(String string, int n, String dest) {
        super(string, n);
        this.dest = dest;
    }

    static {
        $VALUES = new EnumDemo[]{RED, BLUE, PURPLE};
    }
}

单例

单例源码

public enum Singleton {

    INSTANCE;

    private final Student student;

    Singleton() {
        student = new Student();
    }

    private Student getStudent() {
        return student;
    }

    public static Student getInstance() {
        return Singleton.INSTANCE.getStudent();
    }
}

单例反编译

java -jar cfr-0.146.jar Singleton.class --sugarenums false
/*
 * Decompiled with CFR 0.146.
 *
 * Could not load the following classes:
 *  com.redoor.singleton.Student
 */
package com.redoor.singleton;

import com.redoor.singleton.Student;

public final class Singleton
extends Enum<Singleton> {
    public static final /* enum */ Singleton INSTANCE = new Singleton("INSTANCE", 0);
    private final Student student = new Student();
    private static final /* synthetic */ Singleton[] $VALUES;

    public static Singleton[] values() {
        return (Singleton[])$VALUES.clone();
    }

    public static Singleton valueOf(String name) {
        return Enum.valueOf(Singleton.class, name);
    }

    private Singleton(String string, int n) {
        super(string, n);
    }

    private Student getStudent() {
        return this.student;
    }

    public static Student getInstance() {
        return INSTANCE.getStudent();
    }

    static {
        $VALUES = new Singleton[]{INSTANCE};
    }
}

引用

http://www.benf.org/other/cfr/how-are-enums-implemented.html
http://www.jetchen.cn/java-singleton-enum/

相关文章

  • 枚举单例

    描述 本文先反编译枚举,再使用枚举实现单例 枚举 单例 单例源码 单例反编译 引用 http://www.benf...

  • 单例模式之枚举类enum

    通过枚举实现单例模式 枚举类实现单例模式的优点 对于饿汉式单例模式和懒汉式单例模式了解的同学,使用以上两种单例模式...

  • 单例模式(Singleton)

    单例模式(Singleton) 枚举单例 public enum Singleton { INSTANCE; ...

  • 枚举单例——避免反序列化破坏单例

    六种单例模式实现 枚举单例 深度解析单例与序列化

  • Java-Eunm equals

    枚举对象.equals(枚举对象)是可以的。因为枚举类是单例。

  • C05 单例模式 Enum枚举单例(一) 抗序列化攻击分析

    枚举单例的抗序列化攻击演示(一) 输出: INSTANCEINSTANCEtrue 枚举单例的抗序列化攻击演示(二...

  • 单例模式

    饿汉模式: 懒汉模式: Double CheckLock(DCL)实现单例 静态内部类实现单例 枚举单例 使用容器...

  • java 枚举

    枚举 注意:枚举是单例的,单例要保证私有化构造器。 1. 如何自定义枚举类 提供类的属性,声明为 private ...

  • 单例(枚举)

    优缺点说明: 这借助JDK1.5中添加的枚举来实现单例模式。不仅能避免多线程同步问题,而且还能防止反序列化重新创建...

  • 单例模式(Java内部类加载顺序)

    你真的会写单例模式吗——Java实现Android设计模式源码解析之单例模式深度分析 Java 的枚举类型:枚举的...

网友评论

      本文标题:枚举单例

      本文链接:https://www.haomeiwen.com/subject/pnzvictx.html