Как переопределить метод в Java из Kotlin, где параметр имеет тип SomeType <*>? но нужно назначить SomeType <String>? - PullRequest
2 голосов
/ 30 октября 2019

class SomeClass: ThirdPartyBaseClass {
    private var someValue: AnotherType<String>? = null

    override fun initialize(param1: AType?, param2: AnotherType<*>?) {
        this.someValue = param2
    }
}

Когда я override инициализирую метод из ThirdPartyBaseClass, автозаполнение Android Studio добавляет подпись выше. AnotherType - это в основном универсальный тип (из 3-й части библиотеки), и для его использования «T» должен быть «String». Проблема в том, что я не могу назначить param2 на someValue, потому что я получаю ошибку:

type mismatch: required AnotherType<String>? found: AnotherType<*>?.

Как правильно исправитьэто?

1 Ответ

1 голос
/ 30 октября 2019

Вы должны использовать приведение типа, чтобы достичь этого. Попробуйте:

override fun initialize(param1: AType?, param2: AnotherType<*>?) {
    this.someValue = param2 as AnotherType<String>?
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...