У меня есть следующие простые функции расширения Котлина:
// 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>()
}
Этот код компилируется и работает отлично. Но я хочу, чтобы функция getViewsOfType
была свойством, как и views
. Android Studio даже предлагает это. Я разрешаю AS выполнять рефакторинг и генерирует этот код:
inline val <reified T : View> ViewGroup.viewsOfType: List<T>
get() = this.views.filterIsInstance<T>()
Но этот код не компилируется. Это вызывает ошибку: "Тип параметра свойства должен использоваться в его типе приемника"
В чем проблема? Поиск справки об этой ошибке, похоже, не приводит к ответу.