Что означает доллар после индекса в названии класса? - PullRequest
6 голосов
/ 20 декабря 2011

Я профилирую Java-приложение, и наибольшее количество выделенных объектов имеет имя com.x.y.ClassName$5.

Как в профилировщике netbeans, так и в yourkit используется одинаковое соглашение об именах. Я в недоумении, как Google, проблема с именами.

Что такое $5 после имени класса?

EDIT: Кажется, 5 $ - это пятый анонимный класс Я использовал javap в сгенерированном классе, чтобы найти пятый анонимный класс. Ссылка найдена в Как сопоставить имя скомпилированного класса члену перечисления в Java?

Ответы [ 2 ]

19 голосов
/ 20 декабря 2011

com.xyClassName $ 5 означает «пятый анонимный внутренний класс в com.xyClassName»

1 голос
/ 20 декабря 2011

Некоторые ссылки , чтобы помочь вам. Также посмотрите ответ полигеномасляной смазки

вы получаете com.x.y.ClassName $ 5 . когда ваш класс содержит анонимный внутренний класс

    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() {

    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...