LINUX.ORG.RU

Зачем нужен var в Java?

 , ,


1

2

Как многие уже знают, в Java решили ввести ключевое слово var. Драма разыгралась неслабая (хотя бы на хабре), но никто ещё не смог придумать случай, в котором этот var вообще имеет смысл использовать. Может, хотя бы здесь кто-то всё-таки сможет привести подобный пример?

★★★★

Годно, нужно. Кому приходилось писать

Map<LongClassName, AnotherLongClassName> longClassMap = new HashMap<LongClassName, AnotherLongClassName>();
- тот оценит.

mcgeek
()
Ответ на: комментарий от Legioner

Да, я несколько утрировал. Впрочем, diamond operator не отменяет необходимости написания длинного наименования типа.

mcgeek
()

C#-разрабы с удовлетворением читают этот тред, полный боли и печали.

d_Artagnan ★★
()
Ответ на: комментарий от anonymous

У тебя там после = может быть и не ссылочный тип, а примитивный. (В случае примитивов, это называется «боксинг» — т.е. инфа о типе прячется в объект... в общем случае — теряется :)) Примитивный аналог — «void*» в сишке или целый паттерн «Variant», «Аny» — ему пофиг что хранить, но чтоб это использовать, его надо оттуда достать (кастом или «бокскаттером»).

var — это объект конкретного типа, автоматически определенного из правой части выражения, тот же Integer или HashMap, прост... его лень писать :) Аналог в плюсах - кл. слово auto.

slackwarrior ★★★★★
()
Ответ на: комментарий от cdshines

Но не в твоей старперской 6ке!

В моей четвёрке пишут

Map longClassMap = new HashMap()
и искренне не понимают, какие у вас таки есть проблемы?

Legioner ★★★★★
()

А плевать. Java уже после 1.6 испохаблена до неузнаваемости. Хуже уже не сделают. Просто все вменяемые разработчики остановились на 1.6.

anonymous
()
Ответ на: комментарий от Legioner

А, так это с оглядкой на таких, как ты, в доках по шарпу написано, что только умственно отсталые полагаются на имена переменных?

cdshines ★★★★★
()
Ответ на: комментарий от cdshines

Map longClassMap - типов нет

А как же Map?

карта называется понятно как

Имя переменной скопипасчено из исходного фрагмента.

Или что ты хотел сказать?

Нет генериков — нет проблем.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Короче, такой тупой троллинг даже не смешон.

cdshines ★★★★★
()
Ответ на: комментарий от alix

Во втором варианте, если возвращаемое значение NetUtils.getOutputStream() изменится, код придётся переписывать.

anonymous
()
Ответ на: комментарий от anonymous

Если возвращаемое значение NetUtils.getOutputStream() изменится настолько, что не будет потомком OutputStream, то проблема гораздо серьёзнее.

alix ★★★★
() автор топика
Ответ на: комментарий от EXL

Какая разница? Профессиональный инструмент всё равно работодатель оплачивает.

anonymous
()
Ответ на: комментарий от alix

C чего бы? Если там будет совсем бодяга вместо OutputStream, например, int, то дальнейший код просто не скомпилится. А если что-то вменяемое и код компилится, значит, так и надо.

anonymous
()
Ответ на: комментарий от anonymous

Если ты считаешь, что функция getOutputStream может возвращать что-то вменяемое, и при этом не OutputStream, то тебе не var нужен, а гуманитарное образование.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.