0

この質問では、このすべての.classがどのように生成されるか混乱しています。クラスはその背後にある概念をplzexpalinしています。 クラスコードA$Enum$1,A$Enum$2,A$Enum,A$Enum,Aを理解していない.classファイルを開きました。plzexpalinmeの概念それが何を意味するのかA$Enum$2,A$Enum$1.string

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

       },
       Q4 {

       },
       Q5;
    }
    enum Enum1
    {}
}

A $ Enum$1.classコード

class .String extends .String
{

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

1 に答える 1

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
于 2013-01-23T07:50:43.273 に答える