Propiedad de Kotlin: "El parámetro de tipo de una propiedad debe usarse en su tipo de receptor"

Tengo las siguientes funciones simples de extensión de Kotlin:

// 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>() } 

Este código comstack y funciona bien. Pero, quiero que la function getViewsOfType sea ​​una propiedad, al igual que las views . Android Studio incluso lo sugiere. Dejo que AS haga la refactorización y genera este código:

 inline val <reified T : View> ViewGroup.viewsOfType: List<T> get() = this.views.filterIsInstance<T>() 

Pero este código no comstack. Causa error: "El parámetro de tipo de una propiedad debe ser utilizado en su tipo de receptor"

Cuál es el problema aquí? La búsqueda de ayuda sobre este error no parece conducir a una respuesta.

El error significa que solo puede tener un parámetro de tipo genérico para una propiedad de extensión si está usando dicho tipo en el tipo de receptor, el tipo que está ampliando.

Por ejemplo, podría tener una extensión que extienda T :

 val <T: View> T.propName: Unit get() = Unit 

O uno que extiende un tipo que usa T como parámetro:

 val <T: View> List<T>.propName: Unit get() = Unit 

En cuanto a por qué esto es, creo que la razón es que una propiedad no puede tener un parámetro de tipo genérico como una function puede. Si bien podemos llamar a una function con un parámetro de tipo genérico …

 val buttons = viewGroup.getViewsOfType<Button>() 

… No creo que exista una syntax similar para las properties:

 val buttons = viewGroup.viewsOfType<Button> // ?? 
  • Diferencia entre el receptor de function y la function de extensión
  • ¿Por qué no está funcionando kotlin en el estudio andriod con la installation del complemento kotlin?
  • Crear un service independiente en Kotlin
  • Kotlin: cómo el parámetro pnetworkingeterminado en "fun main (parameters: Array <String>)" imprime "guest" sin asignar ningún valor
  • Kotlin: java.lang.UnsupportedOperationException en MutableList add element
  • por qué SomeClass :: class es KClass <SomeClass> pero esta :: class es KClass <out SomeClass>
  • ¿Por qué escribimos NextActivity :: class.java aunque esta es una class de kotlin?
  • kotlin inversa boolean seguro de casting
  • Problemas de configuration de Spring Data Solr
  • Herencias internas Herencia en Kotlin
  • ¿Hay alguna manera de abrir y cerrar una transmisión fácilmente en kotlin?