Size: a a a

Kotlin Community

2020 February 15

M

Mikhail in Kotlin Community
c out как ни странно работает, хотя по идее это наоборот должно быть...
источник

QH

Quantum Harmonizer in Kotlin Community
и B<in T же?..
источник

М

Михаил in Kotlin Community
Mikhail
c out как ни странно работает, хотя по идее это наоборот должно быть...
Все правильно out надо
источник

M

Mikhail in Kotlin Community
Quantum Harmonizer
и B<in T же?..
источник

M

Mikhail in Kotlin Community
Михаил
Все правильно out надо
дак вот с out получается что в C(BImplementation()).b(x) тип x - Nothing. А хотелка чтобы тип x был A
источник

M

Mikhail in Kotlin Community
Mikhail
ой я тут уже переделал функцию на обычный интерфейс на всякий, но получается тоже самое
источник

М

Михаил in Kotlin Community
Mikhail
дак вот с out получается что в C(BImplementation()).b(x) тип x - Nothing. А хотелка чтобы тип x был A
Непонятно почему nothing, но вообще такой дженерик хелл лучше не делать)
источник

BV

Boris Vanin in Kotlin Community
Mikhail
дак вот с out получается что в C(BImplementation()).b(x) тип x - Nothing. А хотелка чтобы тип x был A
Если объявить параметр как out, он только на выход и будет работать
источник

M

Mikhail in Kotlin Community
да, с out понятно, а вот непонятно почему тут in не работает...
источник

M

Mikhail in Kotlin Community
и точнее почему BImplementation не является подтипом B<in A>
источник

BV

Boris Vanin in Kotlin Community
Mikhail
и точнее почему BImplementation не является подтипом B<in A>
В интерфейсе попробуй его in сделать
источник

M

Mikhail in Kotlin Community
вот так?
источник

BV

Boris Vanin in Kotlin Community
Mikhail
вот так?
Ну да
источник

M

Mikhail in Kotlin Community
источник

LS

Leonid Startsev in Kotlin Community
Mikhail
и точнее почему BImplementation не является подтипом B<in A>
Представьте, что является и вы его привели к B<A>, и вам кто то в foo передал A

Но реализация при этом ожидает именно конкретную реализацию,  AImplementation, что в общем случае неверно
источник

M

Mikhail in Kotlin Community
ну т.е. да, для in нам получается что в наследнике тоже обязательно чтобы обрабатывались все входные данные, а я тут пытаюсь скормить A там где функция принимает AImplementation
источник

M

Mikhail in Kotlin Community
окей, наверное понял
источник

M

Mikhail in Kotlin Community
Leonid Startsev
Представьте, что является и вы его привели к B<A>, и вам кто то в foo передал A

Но реализация при этом ожидает именно конкретную реализацию,  AImplementation, что в общем случае неверно
да, справедливо
источник

М

Михаил in Kotlin Community
Leonid Startsev
Представьте, что является и вы его привели к B<A>, и вам кто то в foo передал A

Но реализация при этом ожидает именно конкретную реализацию,  AImplementation, что в общем случае неверно
непонятно почему ide не ругается на метод класса BImplеmentation
источник
2020 February 16

D

Denys in Kotlin Community
А kotlinx-knit кто-то уже гонял?
https://github.com/Kotlin/kotlinx-knit
источник