|
|
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
Люди! Смотрю чужой код и не могу понять public List getRequest(int requestId){ final String queryString = "select pra from ..... } Зачем внутри метода объявлять final? :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2006, 23:44 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
так надежнее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 00:01 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
Помойму, это что-то вроде констант. То есть вот обявленные переменные не меняются в проге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 00:42 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
если какой-нибудь олень, толком не разобравшись как метод работает, будет что-то дописывать, меньше шансов, что вместо запроса он, например, пошлет в субд строчное представление даты - компилятор не позволит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 00:55 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
ни к чему они там на самом деле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 01:02 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
Модификатор final используется в java для предотвращения возможности переопределения значения единожды проинициализированной переменной. Таким образом, переменные объявленные с final являются константами. Зачем это понадобилось автору приведенного фрагмента кода, сложно сказать, но возможно смысл есть. Надо просмотреть весь метод, чтобы это понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 08:11 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
OUни к чему они там на самом деле Ну почему есть ситуация когда только final и спасает :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 09:55 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
Меньше вероятность допустить ошибку, легче читаемость кода. Если вы ищите глубинный смысл типа оптимизация на этапе компиляции, то его нет:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 10:09 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
в дополнение к топегу еще 3-и страницы :) http://rsdn.ru/Forum/Message.aspx?mid=1862508&pg=1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 10:13 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
автор Огласите весь код метода, пожалуйста. ;-)) Может быть внутри метода есть внутренний класс (inner), выполняющий, например,работу по подключению к базе и т.д. Классы, определённые внутри метода, имеют доступ только к final переменным этого метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2006, 10:14 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
ОК, давайте так: 1. final означает что переменные класса или обекта могут быть инициализированы только однажды, в противном случае вас ожидает compile time error (обратите внимание что при использовании IDE вы получите warning от парсера еще до компилирования). О final методах поговорим ниже. 2. Учитывая пункт 1, получаем что ситуации когда final переменные могут быть инициализированны повторно внутри вашего класса исключены. Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Если вы используете 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. 5. Помогают ли final предотвращать ошибки? Нет. Возможны различные ситуации, однако использовние final для предотвращения ошибок покажет как минимум что вы не особо понимаете логику своего кода (кому как ни вам лучше знать что значение переменной в вашем коде никогда не измениться), либо вы не тестировали свой код и допускаете нежелательное изменение значения переменной (при этом вы перекладываете потенциальную ошибку на плечи пользователя вашего класса). Java предоставляет debug и assertions для тестирования кода и предотвращения ошибок. Не меньшее вниманее стоит обратить на JUnit (или эквивалент). 6. Делает ли final ваш код более читабельным? Нет. Это выглядит как масло масленное. Плюс, как сказано выше подобная практика просто покажет ваше незнание определенных вещей. Ну вот, надеюсь кому нибудь это поможет. Comments are welcome :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2006, 01:14 |
|
||
|
зачем внутри метода обьявлять final?
|
|||
|---|---|---|---|
|
#18+
если наприер какая-то строка нужна только в этом методе, но при этом она не зависит от входных параметров и других условий, то логично объявить её внутри метода чтобы минимизировать область видимости и при этом как final по крайней мере чтоб читать удобнее было и понятно что внутри метода используется имено это значение что видно в декларации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2006, 15:25 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33696436&tid=2149415]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
190ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 488ms |

| 0 / 0 |
