Size: a a a

Kotlin Community

2020 January 23

BP

Bogdan Panchenko in Kotlin Community
Boris Vanin
Интерфейс ни от чего не наследуется, класс наследуется от эни только если если другого не указано, таким образом всё логично, равно или поздно эни будет в предках
объяви в интервейсе иквелс, тоСтринг
источник

BP

Bogdan Panchenko in Kotlin Community
*это ток в котлине так (мы про него и говорим)
источник

BV

Boris Vanin in Kotlin Community
Bogdan Panchenko
объяви в интервейсе иквелс, тоСтринг
Почти наверняка этого нет в рантайме
источник

BV

Boris Vanin in Kotlin Community
А, я понял в чем смысл
источник

BP

Bogdan Panchenko in Kotlin Community
Boris Vanin
Почти наверняка этого нет в рантайме
врантайме может и нет никаких интерфейсов вовсе (тут не помню)
источник

BV

Boris Vanin in Kotlin Community
Чтобы, даже если у тебя ссылка интерфейс, то объект всё равно содержит методы из эни
источник

AM

Andrew Mikhaylov in Kotlin Community
Bogdan Panchenko
объяви в интервейсе иквелс, тоСтринг
Интринсики и до свидания
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
Интринсики и до свидания
? там нужно оверайд проставить, при объявлении в интерфейсе
источник

BV

Boris Vanin in Kotlin Community
Это всё равно хак, просто знание, что объект наследуется от эни
источник

BV

Boris Vanin in Kotlin Community
Если бы так не сделали, то переданные по интерфейсу объекты нельзя было бы продолжить в мапу и тд
источник

BV

Boris Vanin in Kotlin Community
Тяжёлое наследие джавы я так думаю
источник

BP

Bogdan Panchenko in Kotlin Community
Boris Vanin
Если бы так не сделали, то переданные по интерфейсу объекты нельзя было бы продолжить в мапу и тд
не говорять что "почему Any не интерфейс" - лично у меня аргументов 0, мне всегда это казалось логичней
источник

BP

Bogdan Panchenko in Kotlin Community
и забить на эстетику (и так давно положили на нее)
источник

AM

Andrew Mikhaylov in Kotlin Community
Boris Vanin
Тяжёлое наследие джавы я так думаю
Я всё ещё не понял проблему. Гипотетически Any становится интерфейсом, всё интерфейсы его наследуют, а классы реализуют. Его три метода имеют дефолтные реализации-интринсики. Что не так?
источник

AM

Andrew Mikhaylov in Kotlin Community
Я уверен, что такой вариант при дизайне системы типов ее могли не рассматривать, но почему сделали не так и оставили "волшебный" класс, с которым возможно "множественное" наследование (всё ещё чисто с точки зрения системы типов), пока не понял.
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
Я всё ещё не понял проблему. Гипотетически Any становится интерфейсом, всё интерфейсы его наследуют, а классы реализуют. Его три метода имеют дефолтные реализации-интринсики. Что не так?
проблема только в подкоучивании компилятора (хаки) и "а если мы так сделаем то многие могуть сказать - фууу не как  у джавы (ООП)". Думаю на этом можно закончить тред и перейти в слак
источник

AM

Andrew Mikhaylov in Kotlin Community
Bogdan Panchenko
проблема только в подкоучивании компилятора (хаки) и "а если мы так сделаем то многие могуть сказать - фууу не как  у джавы (ООП)". Думаю на этом можно закончить тред и перейти в слак
Там и так уже Any вместо былого жирного Object-а с монитором, то есть уже не как в у джавы, при этом тот же synchronized на объекте сделан на стрёмном тайпкасте (который небезопасный, но на JVM всегда успешен). И интерфейс в качестве верхнего типа вроде ООП не противоречит при этом :)

Но согласен, гадать смысла нет. Если вы там задали вопрос в слаке -- киньте ссылку сюда, пожалуйста, завтра почитаем-с.
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
Там и так уже Any вместо былого жирного Object-а с монитором, то есть уже не как в у джавы, при этом тот же synchronized на объекте сделан на стрёмном тайпкасте (который небезопасный, но на JVM всегда успешен). И интерфейс в качестве верхнего типа вроде ООП не противоречит при этом :)

Но согласен, гадать смысла нет. Если вы там задали вопрос в слаке -- киньте ссылку сюда, пожалуйста, завтра почитаем-с.
"Там и так уже Any вместо былого жирного Object-а" - нк наследуешься ты interface Foo : Any, не знаю какой точно там бйт код генерить нужно,но есть вероятностьчто компилятору нужно обяснить что не нужно делать  interface Foo extend Object (это просто догадка, это может быть не одно место и решили тупо не рисковать)

"интерфейс в качестве верхнего типа вроде ООП не противоречит при этом :)" - очень спорно
источник

АО

Алексей Овсянников in Kotlin Community
Bogdan Panchenko
"Там и так уже Any вместо былого жирного Object-а" - нк наследуешься ты interface Foo : Any, не знаю какой точно там бйт код генерить нужно,но есть вероятностьчто компилятору нужно обяснить что не нужно делать  interface Foo extend Object (это просто догадка, это может быть не одно место и решили тупо не рисковать)

"интерфейс в качестве верхнего типа вроде ООП не противоречит при этом :)" - очень спорно
У вас так не получится - интерфейсы не могу расширять классы:)
источник

АО

Алексей Овсянников in Kotlin Community
toString (и иже с ним) не переопределишь, при это правило "один класс - одно расширение другого класса" не работает
источник