Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> откуда берется безымянный класс? 
:(
    Опции темы
zels
Дата 1.7.2006, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 1.7.2006

Репутация: нет
Всего: нет



При компиляции кода
Код

public class C { 
    private class CC {} 
    public static void main(String[] args) { 
    new C().new CC(); 
    } 
} 


Получаются классы C, C$CC, C$1 -откуда он берется, не пойму 
PM MAIL   Вверх
powerOn
Дата 1.7.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



могу ошибиться, но видимо это какая-то оптимизация, поскольку если убрать строку:
Код

new C().new CC();


то классов будет два: C, C$CC. Вероятно С$1 пошел под анонимный класс ...надо в доке покопать....  

Это сообщение отредактировал(а) MoonCat - 1.7.2006, 12:18


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Beard
Дата 1.7.2006, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.7.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 9



Хм, а какая версия javac, и с какими параметрами компилируете? 
PM MAIL   Вверх
powerOn
Дата 1.7.2006, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата(Beard @  1.7.2006,  13:17 Найти цитируемый пост)
Хм, а какая версия javac, и с какими параметрами компилируете?  

у меня JDK 1.5.07
компилирую просто: javac C.java          (т.е. без параметров)  


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
zels
Дата 1.7.2006, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 1.7.2006

Репутация: нет
Всего: нет



Компиляция без параметров, jdk 1.3, 1.4, 1.5.  Уверен, что это точно не оптимизация.

Читал в одной конференции, что это вопрос задавался на собеседовании при приеме на работу.
К сожалению, ответа "почему" там не было.
В книгах ответа не нашел (хотя, может, квалификации не хватает :-) 
PM MAIL   Вверх
chief39
Дата 1.7.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(MoonCat @  1.7.2006,  12:15 Найти цитируемый пост)
Вероятно С$1 пошел под анонимный класс

100%, что под анонимный, судя по единичке вемсто названия.
А вот откель - и в самом деле интересно.. 


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
allex
Дата 1.7.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 5.9.2005

Репутация: нет
Всего: нет



Если взять jad decompiler, то код C$CC выглядит так:

Код

private class C$CC
{

    final C this$0;

    private C$CC()
    {
        this$0 = C.this;
        super();
    }

    C$CC(C$1 c$1)
    {
        this();
    }
}


а C$1 - это просто

Код

static class C$1
{
}


До кучи, С:

Код

public class C
{
    private class CC
    {

        final C this$0;

        private CC()
        {
            this$0 = C.this;
            super();
        }

    }


    public C()
    {
    }

    public static void main(String args[])
    {
        (new C()). new CC();
    }
}


Зачем это надо - я не понимаю smile 
PM MAIL   Вверх
zels
Дата 1.7.2006, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 1.7.2006

Репутация: нет
Всего: нет



Какая версией JAD ? У меня так не получается  smile  
PM MAIL   Вверх
LSD
Дата 2.7.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538





--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
zels
Дата 3.7.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 1.7.2006

Репутация: нет
Всего: нет



Понял. Жду ответа насчет JAD    smile  
PM MAIL   Вверх
allex
Дата 3.7.2006, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 5.9.2005

Репутация: нет
Всего: нет



zels, jad v1.5.8e2. Вроде из DJ Java Decompiler, причем не самой новой версии. http://neshkov.hit.bg/dj.html 
PM MAIL   Вверх
zels
Дата 4.7.2006, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 1.7.2006

Репутация: нет
Всего: нет



Скачал, декомпилировал

У меня показывает, что класс C$1 обычный, не статический. Какой же должен быть?

А С$CC показан упрощенно:
Код

private class C$CC
{

    private C$CC()
    {
    }

    C$CC(C$1 c$1)
    {
        this();
    }
}
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.