我正在分析一個Java應用程序,並且分配的對象的最大數量有名稱 com.x.y.ClassName$5
。什麼是美元,然後是類名中的索引?
netbeans分析器和yourkit都使用相同的命名約定。 我不知道如何谷歌的命名問題。
什麼是$5
課後名稱?
編輯: 看來5美元是宣佈的第五個匿名類。我在生成的類上使用javap來查找哪個是第五個匿名類。參考在How to match compiled class name to an enum member in Java?
我正在分析一個Java應用程序,並且分配的對象的最大數量有名稱 com.x.y.ClassName$5
。什麼是美元,然後是類名中的索引?
netbeans分析器和yourkit都使用相同的命名約定。 我不知道如何谷歌的命名問題。
什麼是$5
課後名稱?
編輯: 看來5美元是宣佈的第五個匿名類。我在生成的類上使用javap來查找哪個是第五個匿名類。參考在How to match compiled class name to an enum member in Java?
com.x.y.ClassName $ 5表示 「在com.x.y.ClassName第五匿名內部類」
一些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() {
};
}
AFAIK會導致ClassName $ klass,而不是ClassName $ – 2011-12-20 13:12:27
謝謝馬克你是正確的。如果有一個不友好的內部階級,它會創建一個。 – 2011-12-20 13:17:00
哇,快速解答。有沒有辦法知道哪個班級是第五名? – bbaja42 2011-12-20 12:45:14
我不知道有什麼辦法可以做到這一點。所以我對自己的回答並不滿意。不說具體順序說「第五」就像說「隨機數」。然而,如果你有一個好的反編譯器,像[JD](http://java.decompiler.free.fr/)可以顯示任何內部類 – 2011-12-20 12:54:12
的代碼,我認爲這是它們被聲明的順序。無論如何,你可以覆蓋toString()在調試器中提供一些有意義的表示。 – fortran 2011-12-20 13:25:47