![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Задались с коллегами вопроом, а есть ли смысл писать вот так
Cуть в наличии ключевого слова final. Что хотелось бы услышать... аргументированные точки зрения почему в этом смысл есть или почему его нет, но только, пожалуйста, аргументируйте свою позицию -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
А шоб було!
![]() Хотя я себе смутно представляю ситуацию, когда это реально может потребоваться. Конечно для final переменных JIT может провести дополнительную оптимизацию, но в случае с Exception, это как мёртвому припарки. -------------------- 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. |
|||
|
||||
SoulKeeper |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.1.2007 Где: Ukraine, Lviv. Репутация: 11 Всего: 15 |
Ну вот приспичит Вам написать код
и без final переменной не обойтись ;) Это сообщение отредактировал(а) SoulKeeper - 22.10.2008, 17:32 |
|||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
SoulKeeper, я чета не понимаю, зачем ?
Можеш обьяснить ? ![]() ![]() |
|||
|
||||
LSD |
|
|||
![]() 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. |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
||||
|
||||
Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 8 Всего: 191 |
вот блин, я почему то читал finally а не final
![]() ![]() надо домой ити ![]() |
|||
|
||||
HappyCoder |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 31.5.2007 Репутация: нет Всего: нет |
Это не миф. Просто новые JVM уже настолько умные, что им необязательно знать, final ли переменная или нет. |
|||
|
||||
w1nd |
|
||||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Отношение, конечно, верное - с каждой версией они всё умнее и умнее. Но насчёт настолько-умности-уже-сейчас - к сожалению, миф. GC далеко не всегда соображает, когда можно удалить объект - обнуление локальной ссылки перед выходом из метода ему сильно помогает. JIT создаёт неоптимальный код - элементарные оптимизации арифметических операций не выполняются. Качество оптимизации на этапе компиляции ниже плинтуса - в нижеследующем примере с автобоксингом всё очень и очень печально. Наконец, никто не отменял рефлексию ![]()
А пользительность модификатора final для параметров и локальных переменных (сюда же относятся исключения, декларированные в catch) - это действительно МИФ. Правда в том, что при использовании достаточно умного (!) компилятора этот модификатор не повредит (!) результату. Для каждого final-параметра в соответствующем классе будет зарезервировано финальное поле со всеми втекающими и вытекающими. Добавлено через 1 минуту и 52 секунды Кстати, ещё капля дёгтя - не удаляется мёртвый код. Добавлено через 5 минут и 1 секунду Да, собственно, главную мысль не сформулировал: модификатор final для методов, полей и параметров и локальных переменных - это, считайте, разные модификаторы ![]() -------------------- ![]() ![]() |
||||
|
|||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
а я замечал, что простейшие ветки отсекает:
Не декомпилировал, но то, что строки "debug mode only" в байткоде не было косвено указывает на отсечение этой ветки. |
|||
|
||||
w1nd |
|
|||
![]() Вертилятор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 22.3.2006 Где: Москва Репутация: 20 Всего: 54 |
Да, это единственное, что оно умеет отсекать. -------------------- ![]() ![]() |
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Исходя из всего вышесказанного напрашивается такой вывод. Было бы здорово в будущих версиях java видеть все локальные переменные (в т.ч. параметры методов) константами по умолчанию, а те из них, что должны изменяться следует помечать как переменные, например, вот так:
С одной стороны это изменение позволило бы избежать некоторого процента локальных багов, а с другой, разумеется, стало бы причиной несовместимости порядочного количества старого кода. -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
||||
|
||||
LSD |
|
|||
![]() 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. |
|||
|
||||
Royan |
|
|||
Dreamer ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 14.9.2002 Где: Лондон Репутация: 3 Всего: 15 |
Platon, LSD,
Хорошо почему нет? -------------------- Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |