Size: a a a

2021 November 26

AN

Alexander Nozik in Kotlin Moscow
А можно? Подозреваю, что просто прозевали
источник

AN

Alexander Nozik in Kotlin Moscow
источник

AN

Alexander Nozik in Kotlin Moscow
У нас тут сотрудник kotlin language research, у него и спросим
источник

I

Ilmir in Kotlin Moscow
Шут его знает.
источник

И

Илья in Kotlin Moscow
:D
источник

AN

Alexander Nozik in Kotlin Moscow
Что и требовалось доказать.
источник

AN

Alexander Nozik in Kotlin Moscow
Надо тикет открыть и посмотреть реакцию.
источник

И

Илья in Kotlin Moscow
так думаю, что мало кто с этим сталкивался, ибо многие знают что так не надо, и не делают, а тут случайно получилсоь
источник

AM

Andrew Mikhaylov in Kotlin Moscow
Мне при генерации кода порой пригождалось, что несколько вопросительных знаков схлопываются в один. Не удивлюсь, если где-то в дикой природе есть код вроде
if(isAbstract) emit("abstract ")
when(kind) {
   CLASS -> emit("class ")
   IFACE -> emit("interface ")
}

и его автор очень удивится, что абстрактные интерфейсы внезапно "запретили"))
источник

a

amaliema in Kotlin Moscow
:)
источник
2021 November 27

VV

Vladislav Verminsky in Kotlin Moscow
На самом деле, это логично, если смотреть с точки зрения разработчиков всякого тулинга. Да, эти кейсы редки, но используются, чтобы писать меньше кода.
Абстрактный класс нельзя создавать.
Вот у тебя в коде нужно создать класс, через класс
Далее будет Java :)
<T> T getInstance(Class<T> type) {
 if(Modifier.isAbstract(type.getModifiers()) { // <- Делаешь проверку
   throw new .....;
 }
 ....
Если бы интерфейс не был бы абстрактным, нужно было бы писать больше кода

<T> T getInstance(Class<T> type) {
 if(type.isInterface() || Modifier.isAbstract(type.getModifiers()) { // <- Делаешь  двойную проверку
   throw new .....;
 }
 ....
источник

AM

Andrew Mikhaylov in Kotlin Moscow
Я думаю, речь выше исключительно о странной возможности написать "abstract interface". То, что интерфейсы считаются абстрактными по умолчанию, вопросов не вызывает :)
источник

VV

Vladislav Verminsky in Kotlin Moscow
Ну в Котлине область видимости по умолчанию public, но можно явно указать public. Зачем? Ну это не ломает семантику, а кто-то считает, что явное лучше не явного :) ну вот хочешь ты явно перечислять все модификаторы – перечисляй. Правда на тебя остальной мир будет смотреть косо :)
источник

AM

Andrew Mikhaylov in Kotlin Moscow
Не уверен, что аналогия точно передаёт суть, так как в случае с областью видимости можно таки другим модификатором её сменить, а вот абстрактность с интерфейса никак не снимешь :) Но я не то, чтобы настаивал на запрете. Просто прикольная особенность, не более того.
источник

VS

Vladimir Sitnikov in Kotlin Moscow
Тут как обычно: можно сначала запретить abstract interface, а потом придумать к нему прикольную семантику и разрешить :)
источник

VV

Vladislav Verminsky in Kotlin Moscow
Ну раньше, до 8 Java, все методы  в интерфейсе были абстрактными, а теперь они ещё и default могут быть. Это как и с ключевым словом goto. На всякий случай зарезервировали. Тут похоже. Вдруг в будущем можно будет делать. default интерфейсы :)
источник