Java 如何查看生成的类文件?

Java 如何查看生成的类文件?,java,android,android-studio,decompiling,decompiler,Java,Android,Android Studio,Decompiling,Decompiler,使用Android Studio,我试图了解更多关于引擎盖下发生的事情。其中之一就是代码生成 例如,当您在代码中像这样定义嵌套枚举时 class EnumExample1 { public enum Season { WINTER, SPRING, SUMMER, FALL } } 根据,编译器生成此 public static final class EnumExample1$Season exten

使用Android Studio,我试图了解更多关于引擎盖下发生的事情。其中之一就是代码生成

例如,当您在代码中像这样定义嵌套枚举时

class EnumExample1
{
    public enum Season
    {
        WINTER,
        SPRING,
        SUMMER,
        FALL
    }
}  
根据,编译器生成此

public static final class EnumExample1$Season extends Enum  
{  
    private EnumExample1$Season(String s, int i)  
    {
        super(s, i);  
    }  

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

    public static EnumExample1$Season valueOf(String s)  
    {  
        return (EnumExample1$Season)Enum.valueOf(EnumExample1$Season, s);  
    }  

    public static final EnumExample1$Season WINTER;  
    public static final EnumExample1$Season SPRING;  
    public static final EnumExample1$Season SUMMER;  
    public static final EnumExample1$Season FALL;

    private static final EnumExample1$Season $VALUES[];  

    static   
    {
        WINTER = new EnumExample1$Season("WINTER", 0);  
        SPRING = new EnumExample1$Season("SPRING", 1);  
        SUMMER = new EnumExample1$Season("SUMMER", 2);  
        FALL.  = new EnumExample1$Season("FALL", 3);  

        $VALUES = new EnumExample1$Season[]
        {  
            WINTER, SPRING, SUMMER, FALL  
        };
    )
}
这对于准确理解正在发生的事情非常有帮助。因此,我试图了解其他各种内容是如何编译的,但我似乎找不到任何关于如何获得类似于此源代码的内容的信息。我的猜测是,我将不得不反编译生成的'*.jar'文件,但这纯粹是一种猜测(尽管我相信这至少是一个受过一定教育的文件)


那么,如何查看基于您自己的编译器生成的代码呢?

应该有一个目录
build>intermediates>classes>debug>mypackage.foo.bar>myclass.class
。您的IDE将能够实现它。也许这只是一个示例,但仅供参考,没有理由将您的枚举放在另一个类中
public enum Season
可以很好地保存在它自己的文件中(文件名需要像往常一样匹配,因此它需要在
Season.java
中)。它不需要这样做,但出于封装目的,在某些情况下应该嵌套它。无论哪种方式,正如您正确假设的那样,这都是为了说明目的。另外,如果它不是嵌套的,我不相信生成的代码会使它成为“静态”的,这也是选择这个作为示例的原因之一。另外,我也不知道您指的是什么。你能详细说明一下,但更好的是,把它放在一个答案中,也许用一个屏幕截图显示它在哪里?毕竟,我不能“接受”评论我没有安卓工作室的副本安装在这台电脑上,所以我不能确定确切的目录-我的工作从内存。您应该能够在Windows资源管理器中导航到您的项目目录,并找到我所说的结构。或者只搜索以
.class
结尾的文件。如果你还没有答案的话,我回家后会再检查一遍。