![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Речь идет о том, можно ли посмотреть какой получается код после того как выполнены все преобразования/проверки и прочее касающееся настраиваемых типов, то есть именно тот код который потом компилируется. Очень хочется посмотреть оригинал, остающийся от работы javac до перевода этого оригинала в байт код, а не декомпилированный вариант.
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Royan
Если ты имеешь в виду, что javac при оптимизации кода формирует какой-то новый source файл на базе твоего, то этого не происходит. |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Что-то ты сам себе противоречишь. Или ты не понимаешь, как работает жаба, или не можешь объяснить, чего хочешь. 1. Как и сказал Maksym, javac не генерит (ни для себя, ни для кого другого) никаких "чистых исходников". 2. При выполнение жаба не производит декомпилирование байт-кода обратно в исходник. Если у тебя стоит задача восстановить исходник из скомпилированных классов, то так и скажи. Точный начальный исходник ты при этом не получишь. Как минимум, имена переменных не будут совпадать. Нет, конечно, при желании можно написать такой исходник, чтобы он восстановился в точности, но это уже маразм - ты пока писать будешь сам не раз запутаешься. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Royan |
|
|||
|
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Видимо я не ясно выразился. Мой вопрос был связан с явлением generics'ов. В С++ есть термин предварительная компиляция. Я не знаю применим ли он к джава в данном случае, но факт в том, что все проверки типов в java осуществляются на этапе прекомпиляции (первичном анализе кода или как угодно иначе) после чего вся информация о типах выкашивается и остается java 1.4 совместимый код. Вот именно его я и хочу посмотреть. Вопрос возможно ли это? Если да, то как?
-------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Сильно сомневаюсь. Хотя, если написать свой "переводик"... -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| cube |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 11.4.2007 Репутация: 2 Всего: 3 |
нет, невозможно |
|||
|
||||
| gaff |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 17.5.2007 Репутация: нет Всего: нет |
Компилятор записывает в класс сигнатуры методов/классов, содержащих генерики, так скажем, в двух видах:
- в виде понятном java 1.4, пишется в дескриптор метода (конструктора, типа поля, класса). Использется виртульной машиной и доступен через reflection, например, через Method.getParameterTypes() для методов и конструкторов. - в java 1.5 и выше, пишется в специальный Signature аттрибут, который используется исключительно компилятором. Также доступен через reflection, например, через Method.getGenericParameterTypes() Подробнее здесь: http://java.sun.com/docs/books/jvms/second...ormat-Java5.pdf, глава 4.4 Собственно, чтобы посмотреть во что комилятор преобразовывает сигнатуры, содержащие генерики, вам надо сравнить дескрипторы и Signature аттрибуты в скопилированом классе. Возможно, это именно то, что вам нужно. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |