Я надеюсь, что все остаются здоровыми среди этой пандемии c:)
Я мог бы помочь, чтобы выяснить, что я делаю здесь неправильно, TIA! Кроме того, я немного новичок в Kotlin, извините, если это глупый вопрос.
Я пытаюсь расширить класс и реализовать интерфейс, определенный в библиотеке java (AndroidX ). Однако, когда я пытаюсь реализовать функцию интерфейса, я получаю ошибку несоответствия типов с моим возвращаемым значением. Поскольку я использую интерфейс, определенный в библиотеке AndroidX, просто изменить сигнатуру функции интерфейса, чтобы она была построена, не вариант.
Я в основном конвертирую этот другой SO-ответ в Kotlin: { ссылка }
Информация о машине разработчика / IDE: Android Studio 3.6.1 Build # AI-192.7142.36.36.6241897, построена 26 февраля 2020 г. Версия среды выполнения: 1.8.0_212-release -1586-b04 amd64 VM: виртуальная машина OpenJDK с 64-разрядным сервером от JetBrains sro Windows 8.1 6,3 G C: ParNew, ConcurrentMarkSweep Память: 1237M Ядра: 8 Реестр: ide.new.welcome.screen.force = true Не Подключаемые плагины: org.jetbrains. kotlin, com.google.services.firebase
Я попытался обобщить эту ошибку с помощью приведенного ниже кода, чтобы, надеюсь, сэкономить некоторые усилия, чтобы уловить другой вопрос SO, и я я получаю ту же ошибку компилятора с этим обобщенным кодом.
open class LibraryClassA {
}
open class LibraryClassB {
val retval = LibraryClassA()
// this kotlin signature seems to be inferred/transcribed from java by the IDE/compiler
open fun <T : LibraryClassA?> foobar(): T? {
return null
}
}
class MyClass : LibraryClassB() {
override fun <T : LibraryClassA?> foobar(): T? {
return retval // compiler error on this line - type mismatch, Required T?, Found LibraryClassA
}
}