Size: a a a

2018 May 09

AB

Anatoly Berchanov in KotlinLangRu
class Claz<Z : TdApi.Object> {
private val z: Z

constructor(z: Z) {
this.z = z
}

fun get() = z
}
источник

AB

Anatoly Berchanov in KotlinLangRu
как пример, наследники класса TdApi.Object
источник

QH

Quantum Harmonizer in KotlinLangRu
Вопрос в чём?
источник

SG

Sergey Grushin in KotlinLangRu
ничего не понял(
источник

AB

Anatoly Berchanov in KotlinLangRu
Если я создам коллекцию с такими вот объектами, то в нее можно будет положить только Claz<TdApi.Object>, а нужно чтобы в дженерике могли быть любые потомки TdApi.Object
источник

QH

Quantum Harmonizer in KotlinLangRu
Claz?
источник

SG

Sergey Grushin in KotlinLangRu
T : родитель
источник

QH

Quantum Harmonizer in KotlinLangRu
Anatoly Berchanov
Если я создам коллекцию с такими вот объектами, то в нее можно будет положить только Claz<TdApi.Object>, а нужно чтобы в дженерике могли быть любые потомки TdApi.Object
для этого есть in
источник

AB

Anatoly Berchanov in KotlinLangRu
Да, in или out решат этот вопрос. Но у меня в Сlaz есть методы которые принимают и возвращают обьект типа дженерика.
источник

SG

Sergey Grushin in KotlinLangRu
Quantum Harmonizer
для этого есть in
вместо двоеточия получается in?
источник

AB

Anatoly Berchanov in KotlinLangRu
Sergey Grushin
вместо двоеточия получается in?
https://kotlinlang.ru/docs/reference/generics.html Вариантность на уровне объявления
источник

AB

Anatoly Berchanov in KotlinLangRu
почитай
источник

SG

Sergey Grushin in KotlinLangRu
например для метода


fun <T in Response> makeApiRequest(request: Request, clazz: Class<T>) : T? {
...
}
источник

AB

Anatoly Berchanov in KotlinLangRu
Response это Iterable?
источник

OD

Oleg D. in KotlinLangRu
в Java пишется <? extends SomeType>
в котлине <out SomeType>
источник

OD

Oleg D. in KotlinLangRu
это в декларации аргументов
источник

AB

Anatoly Berchanov in KotlinLangRu
Oleg D.
в Java пишется <? extends SomeType>
в котлине <out SomeType>
Да, но если написать out, то нельзя будет получать в методы переменные типа дженерика как аргументы.
источник

QH

Quantum Harmonizer in KotlinLangRu
Anatoly Berchanov
Да, но если написать out, то нельзя будет получать в методы переменные типа дженерика как аргументы.
ну да, потому что они будут любого подтипа
источник

QH

Quantum Harmonizer in KotlinLangRu
ну и для особых случаев есть @UnsafeVariance
источник

OD

Oleg D. in KotlinLangRu
Anatoly Berchanov
Да, но если написать out, то нельзя будет получать в методы переменные типа дженерика как аргументы.
но наследников же можно?
источник