powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / зачем внутри метода обьявлять final?
12 сообщений из 12, страница 1 из 1
зачем внутри метода обьявлять final?
    #33695992
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди!
Смотрю чужой код и не могу понять
public List getRequest(int requestId){
final String queryString = "select pra from .....
}
Зачем внутри метода объявлять final? :(
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33696006
OU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OU
Гость
так надежнее :)
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33696048
Freeholder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помойму, это что-то вроде констант. То есть вот обявленные переменные не меняются в проге.
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33696058
коты
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если какой-нибудь олень, толком не разобравшись как метод работает, будет что-то дописывать, меньше шансов, что вместо запроса он, например, пошлет в субд строчное представление даты - компилятор не позволит
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33696063
OU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OU
Гость
ни к чему они там на самом деле
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33696193
pretender
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Модификатор final используется в java для предотвращения возможности переопределения значения единожды проинициализированной переменной. Таким образом, переменные объявленные с final являются константами. Зачем это понадобилось автору приведенного фрагмента кода, сложно сказать, но возможно смысл есть. Надо просмотреть весь метод, чтобы это понять.
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33696401
Евгений Путилин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OUни к чему они там на самом деле
Ну почему есть ситуация когда только final и спасает :-)
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33696423
knu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
knu
Гость
Меньше вероятность допустить ошибку, легче читаемость кода. Если вы ищите глубинный смысл типа оптимизация на этапе компиляции, то его нет:)
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33696436
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в дополнение к топегу еще 3-и страницы :)
http://rsdn.ru/Forum/Message.aspx?mid=1862508&pg=1
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33696441
AlexMD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Огласите весь код метода,
пожалуйста. ;-))
Может быть внутри метода
есть внутренний класс (inner),
выполняющий, например,работу по подключению
к базе и т.д.
Классы, определённые внутри метода,
имеют доступ только к final переменным
этого метода.
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33698763
OU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OU
Гость
ОК, давайте так:

1. final означает что переменные класса или обекта могут быть инициализированы только однажды, в противном случае вас ожидает compile time error (обратите внимание что при использовании IDE вы получите warning от парсера еще до компилирования).
О final методах поговорим ниже.

2. Учитывая пункт 1, получаем что ситуации когда final переменные могут быть инициализированны повторно внутри вашего класса исключены. Пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 public   class  Untitled2
{
   private   final   int  x= 1 ;
  
   public   void  changeFinalVariable()
  {
    x= 0 ;
  }
}

Если вы используете IDE то получите warning от парсера еще до компиляции, а если используете текстовый редактор то попробуйте скомпилировать код и получите ощибку во время компиляции.

3. Зачем же обозначать переменные как final ? Ответ прост, для того чтобы сделать их константами. В Java нет констант как таковых (есть reserved word const , но оно вклучено в язык для возможного использования в будущем. ИМХО: надеюсь оно так и останется зарезервированым).

4. final методы. Здесь все еще проще. final access specifier используется для того чтобы не допустить overriding метода. Опять же, если вы используете IDE, то получите warning от парсера, иначе получите ощибку во время компеляции. Пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
 public   abstract   class  Untitled1
{
   public   final   void  changeFinalMethod ()
  {

  }
}

 public   class  Untitled2  extends  Untitled1
{
   public   final   void  changeFinalVariable ()
  {

  }
}

5. Помогают ли final предотвращать ошибки?
Нет. Возможны различные ситуации, однако использовние final для предотвращения ошибок покажет как минимум что вы не особо понимаете логику своего кода (кому как ни вам лучше знать что значение переменной в вашем коде никогда не измениться), либо вы не тестировали свой код и допускаете нежелательное изменение значения переменной (при этом вы перекладываете потенциальную ошибку на плечи пользователя вашего класса). Java предоставляет debug и assertions для тестирования кода и предотвращения ошибок. Не меньшее вниманее стоит обратить на JUnit (или эквивалент).

6. Делает ли final ваш код более читабельным?
Нет. Это выглядит как масло масленное. Плюс, как сказано выше подобная практика просто покажет ваше незнание определенных вещей.

Ну вот, надеюсь кому нибудь это поможет.
Comments are welcome :)
...
Рейтинг: 0 / 0
зачем внутри метода обьявлять final?
    #33699112
s-e-r-g-e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если наприер какая-то строка нужна только в этом методе, но при этом она не зависит от входных параметров и других условий, то логично объявить её внутри метода чтобы минимизировать область видимости и при этом как final по крайней мере чтоб читать удобнее было и понятно что внутри метода используется имено это значение что видно в декларации
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / зачем внутри метода обьявлять final?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]