Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет alamar ([info]alamar)
@ 2009-04-09 00:17:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Тут мне впаривают
Что в язык Java нет передачи параметров в метод по ссылке.

Я пока не покупаю. Кажется, это происходит, когда привычка применять термины есть, а понимания, что за ними стоит, нету.

Хотя в принципе считаю термины типа "передача значений по ссылке" и "передача ссылки, как значения" идиотскими. Мне ещё давече в ##java пытались ими моск ипать. Из чего и следует отсутствие понимания, как я сказал чуть выше.


(Читать комментарии) - (Добавить комментарий)


[info]alamar
2009-04-10 16:12 (ссылка)
"ссылки передаются по значению"
Вот это понятие мне очень не нравится.
Оно как бы подразумевает, что ссылку можно передать ещё как-либо, кроме как по значению.
При этом других способов передачи ссылки нет - ссылка штука хрупкая, при попытке взять ссылку на ссылку получается указатель на указатель.

Поэтому нельзя употреблять в отношении жавы "передача по ссылке", и "передача по значению" тоже нельзя, call-by-sharing единственный более-менее верно описывает наблюдаемый феномен.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ketmar
2009-04-10 16:37 (ссылка)
неа, не получается. получится вполне кошерная ссылка на ссылку, которая именно ссылка, а не указатель. см. Object Pascal, например. где a: TClass даёт в результате именно ссылку на экземпляр TClass (которая выглядит как «нормальная» переменная), и в то же время можно передать это в процедуру, где (var arg: TClass).
получаем вполне себе ссылку на ссылку, это работает и даже имеет смысл. и вот как раз такой штуки жаба сделать не может. жаба может только (arg: TClass), и всё.

отсюда вполне логично, поскольку объявление Class foo в жабе (как и в OP) является именно объявлением *ссылки*, то эта самая ссылка передаётся по значению потом. в жабе это единственный вариант передачи, в OP — нет.

(Ответить) (Уровень выше)


(Читать комментарии) -