почему такой вариант с тильдой не прокатывает
идеа ругается експектед
Set<String> set = new HashSet<~> ();
victor
19 уровень
почему такой вариант с тильдой ,,,
Архивный
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Дмитрий СоснинExpert
23 декабря 2018, 15:21решение
тильда это личное сокращение ИДЕИ , украшательство призванное скрыть лишний код.
раньше надо было писать
Set<String> set = new HashSet<String> ();
и так как внутри мог быть не только String, но и какой-нить другой класс с названием из 15 символов, то чтобы упростить восприятие кода, ИДЕЯ стала подменять правое упоминание класса тильдой. Но это не имеет никакого отношения к языку. лишь местное упрощение.
а гдето с 7 версии явы в самом языке разрешили писать
Set<String> set = new HashSet<> ();
и означает это тоже самое, что справа подразумевается тот же самый класс(ы), что и слева.
подробнее можно погуглить Diamond operator
+4
victor
23 декабря 2018, 15:25
ты наверное не заметил последние 2 слова
почему такой вариант с тильдой не прокатывает
0
Сергеев ВикторMaster
23 декабря 2018, 15:29решение
он тебе ответил, потому что это не конструкция языка, а рисунок от идеи
+4
Дмитрий СоснинExpert
23 декабря 2018, 15:32
потому что когда ты сам ставишь тильду, то ИДЕЯ не понимает что ты от неё хочешь. такого знака тут быть не может согласно языка. Но сама ИДЕЯ может вносить такое украшательство в код. но о том что это лишь украшательство она предупреждает изменением цвета этой тильды.
Но если очень хочется, то можешь написать что-то вроде
ArrayList<Character> list = new ArrayList<Character>();
и попросить ИДЕЮ сократить это выражение нажав ctrl + минус
+2