使用Android Studio,我试图了解更多有关幕后内容的信息。其中之一就是代码生成。
例如,当您在代码中定义嵌套枚举时,就像这样...
class EnumExample1
{
public enum Season
{
WINTER,
SPRING,
SUMMER,
FALL
}
}
根据this tutorial,编译器会生成此...
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'文件,但这纯粹是猜测(虽然我想相信它至少是一个有点受过教育的人。)
那么如何根据自己的视图查看编译器生成的代码?