枚举关键字的使用以及enum关键字后面的.class的生成

时间:2013-01-23 06:58:04

标签: java

在这个问题中我很困惑所有这个.class生成的类是A$Enum$1,A$Enum$2,A$Enum,A$Enum,A plz expalin背后的概念,我打开了.class文件,其中我不理解A$Enum$2,A$Enum$1类代码plz expalin我概念.string意味着什么

class A
{
    enum Enum
    {
       Q1,Q2,Q3{

       },
       Q4 {

       },
       Q5;
    }
    enum Enum1
    {}
}

$ Enum $ 1.class代码

class .String extends .String
{

    .String(String s, int i)
    {
        super(s, i, null);
    }
}

1 个答案:

答案 0 :(得分:0)

共创建了6个班级。

A$Enum$1 //Inner class created for Q3  
A$Enum$2 //Inner class created for Q4 
A$Enum    //Enum, the enum defined within A
A$Enum1   //Enum1, the enum defined within A
A$1      //Not sure
A        //Class A

以下是A$Enum$1

的反编译代码
Compiled from "A.java"
final class A$Enum$1 extends A$Enum{
    A$Enum$1(java.lang.String, int);
}

反汇编代码。

   33:  invokespecial   #14; //Method A$Enum$1."<init>":(Ljava/lang/String;I)V  
   36:  putstatic       #15; //Field Q3:LA$Enum;  
   39:  new     #16; //class A$Enum$2