Ich habe die folgenden einfachen Kotlin Erweiterungsfunktionen „Typen Parameter einer Eigenschaft muss in seinem Empfängertyp verwendet werden“:Kotlin Eigentum:
// Get the views of ViewGroup
inline val ViewGroup.views: List<View>
get() = (0..childCount - 1).map { getChildAt(it) }
// Get the views of ViewGroup of given type
inline fun <reified T : View> ViewGroup.getViewsOfType() : List<T> {
return this.views.filterIsInstance<T>()
}
Dieser Code kompiliert und funktioniert einwandfrei. Aber ich möchte die Funktion getViewsOfType
eine Eigenschaft sein, genau wie die views
. Android Studio schlägt es sogar vor. Ich lasse AS tun das Refactoring und erzeugt diesen Code:
inline val <reified T : View> ViewGroup.viewsOfType: List<T>
get() = this.views.filterIsInstance<T>()
Aber dieser Code nicht kompiliert. Es verursacht Fehler: "Typ-Parameter einer Eigenschaft muss in seinem Empfängertyp verwendet werden"
Was ist das Problem hier? Suchen nach Hilfe zu diesem Fehler scheint nicht zu einer Antwort zu führen.
Ja, ich denke, das ist richtig. Tatsächlich ist meine "getViewOfType" -Funktion nutzlos, da Kotlin bereits über eine Möglichkeit verfügt, die Auflistung nach Typ zu filtern. –