Kotlin "Cualquier tipo que implemente una interfaz"

Tengo una interfaz de delegado:

interface Delegate { fun didSelectWord(word: String) } 

Y me gustaría tener una propiedad llamada delegate

 val delegate: <T> where T : Delegate 

el delegate puede ser cualquier cosa que implemente Delegado

También he intentado

 val delegate: Any : Delegate 

Pero ambos dan error de compilation

La solución es bastante fácil

 val delegate: Delegate 

Ahora algo como esto funciona

 interface Delegate class Test: Delegate { fun yourMethod() = "Your Method" } fun test() { val delegate: Delegate delegate = Test() println(delegate) } 

Si desea utilizar una function que solo está presente en Test , pero no en Delegate , debe convertirla

 (delegate as Test).yourMethod() 

De lo contrario, solo funcionarán las funciones que estén presentes en Delegate

delegate.yourMethod() no funcionará.

Puedes hacer así:

 class SomeClass<T : Delegate> { val delegate: T = // initialize delegate ... } 

Convierta la class un tipo genérico que declare el parámetro de tipo T Y puede crear properties de tipo T

  • ImageIO No se puede leer el file de input (Kotlin)
  • Android se cuelga después de intentar crear una versión de lanzamiento
  • Clase de datos kotlin + validation de frijol jsr 303
  • Android - Kotlin: valor de retorno en la diversión asíncrona
  • Gran time de compilation para el código de Kotlin en IntelliJ
  • Agregue una function de extensiones a la class de Matemáticas en kotlin
  • Bloque perezoso Kotlin no ejecutado cuando se usa Mockito e InjectMocks
  • La autorización de código de Spotify se rechaza por malas cnetworkingenciales, a pesar de que se envía un token válido
  • onCreate crashing después de convertir de Java a Kotlin
  • Firma de tipo para la function Kotlin con parameters pnetworkingeterminados
  • "Error de android studio": no se puede encontrar o cargar la class principal "en el método principal del file Kotlin