2011-12-20 54 views
6

我正在分析一個Java應用程序,並且分配的對象的最大數量有名稱 com.x.y.ClassName$5什麼是美元,然後是類名中的索引?

netbeans分析器和yourkit都使用相同的命名約定。 我不知道如何谷歌的命名問題。

什麼是$5課後名稱?

編輯: 看來5美元是宣佈的第五個匿名類。我在生成的類上使用javap來查找哪個是第五個匿名類。參考在How to match compiled class name to an enum member in Java?

回答

19

com.x.y.ClassName $ 5表示 「在com.x.y.ClassName第五匿名內部類」

+0

哇,快速解答。有沒有辦法知道哪個班級是第五名? – bbaja42 2011-12-20 12:45:14

+0

我不知道有什麼辦法可以做到這一點。所以我對自己的回答並不滿意。不說具體順序說「第五」就像說「隨機數」。然而,如果你有一個好的反編譯器,像[JD](http://java.decompiler.free.fr/)可以顯示任何內部類 – 2011-12-20 12:54:12

+1

的代碼,我認爲這是它們被聲明的順序。無論如何,你可以覆蓋toString()在調試器中提供一些有意義的表示。 – fortran 2011-12-20 13:25:47

1

一些links幫你找到。 也看看polygenelubricant's答案

你會得到com.x.y.ClassName $ 5。當你的類包含一個anonyomous內部類

sample8.class 
    sample8$1.class 
    sample8$2.class 
    sample8$klass.class 
    sample8$klass$1.class 

public class sample8 { 


     private class klass{ 
      void vodka() { 
       sample8 _s = new sample8() { 

       }; 

      } 
     } 
     sample8() { 
       klass _k = new klass(); 
       _k.vodka(); 
      } 


    public static void main(String args[]) 
    { 
    } 

    sample8 _s = new sample8() { 

    }; 

    sample8 _s1 = new sample8() { 

    }; 
} 
相關問題