通过idea的反编译插件看到的内容为什么不一样?

创建一个枚举类ColorX:

public enum ColorX {
    RED, GREEN, BLUE;
}

我在网上看到别人反编译出来的内容是这样:

public final class ColorX extends Enum
{
    public static ColorX[] values()
    {
        return (ColorX[])$VALUES.clone();
    }
    public static ColorX valueOf(String name)
    {
        return (ColorX)Enum.valueOf(enum01/ColorX, name);
    }
    private ColorX(String s, int i)
    {
        super(s, i);
    }
    public static final ColorX RED;
    public static final ColorX GREEN;
    public static final ColorX BLUE;
    private static final ColorX $VALUES[];
    static 
    {
        RED = new ColorX("RED", 0);
        GREEN = new ColorX("GREEN", 1);
        BLUE = new ColorX("BLUE", 2);
        $VALUES = (new ColorX[] {
            RED, GREEN, BLUE
        });
    }
}

而我自己在idea上用默认反编译插件查看class文件的内容却是这样:

public enum ColorX {  
    RED,  
    GREEN,  
    BLUE;  
  
    private ColorX() {  
    }  
}

显然少了很多东西,这是为什么?

阅读 5.1k
1 个回答

缺的东西在编译时,编译器会自动加上,相当于是java语言内部的对enum类型的实现。全都反编译出来反而是画蛇添足了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题