Extendiendo la class genérica en Kotlin

Digamos que tengo este código de muestra en Java:

public class MyActivityDelegate implements ActivityMvpDelegate 

donde ActivityMvpDelegate:

 interface ActivityMvpDelegate<V extends MvpView, P extends MvpPresenter<V>> 

El mismo código convertido a Kotlin se ve así

 class MyActivityDelegate(private val activity: Activity) : ActivityMvpDelegate<MvpView, MvpPresenter<V>> 

Por supuesto, tengo una reference no resuelta en V y no estoy seguro de cómo debería verse este código, en Java no tengo que especificar genérico aquí … cualquier consejo va a ser muy apreciado

Su statement de interfaz requiere que

  • V extiende MvpView
  • V (exactamente V , no su subtipo) se usa como parámetro genérico para P extends MvpPresenter<V>

Teniendo en count eso, no puede ampliar ActivityMvpDelegate<MvpView, MvpPresenter<V>> , porque no hay garantía de que V sea ​​exactamente MvpView (también, en Kotlin, los parameters generics no se henetworkingan implícitamente, tiene que networkingeclararlos como class SomeClass<T> : SomeInterface<T> ).

Sin embargo, puedes escribirlo como

 class MyActivityDelegate(private val activity: Activity) : ActivityMvpDelegate<MvpView, MvpPresenter<MvpView>> 

o introduzca otro parámetro genérico, de modo que V y el argumento para P sigan siendo los mismos:

 class MyActivityDelegate<T : MvpView>(private val activity: Activity) : ActivityMvpDelegate<T, MvpPresenter<T>> 

También puede cambiar la statement genérica de su interfaz desde P extends MvpPresenter<V> a P extends MvpPresenter<? extends V> P extends MvpPresenter<? extends V> (o usa out V en Kotlin), y podrá usar cualquier subtipo de V como argumento, incluidos los generics limitados:

 class MyActivityDelegate<T : MvpView>(private val activity: Activity) : ActivityMvpDelegate<MvpView, MvpPresenter<T>> 
  • ¿Cómo se organizan múltiples corrutines y bloques de expectativas en una testing de Kotlin Spek?
  • Prueba de la aplicación Android Kotlin: Mockito con Dagger inyecta nulo
  • Extraño error de "Val no se puede reasignar" al establecer una propiedad en Kotlin de un object Java
  • El comstackdor de Kotlin no puede deducir que la variable no puede contener nulos en el ciclo do-while
  • Cómo animar una list de animation en Kotlin?
  • Error al detectar exception en la llamada asíncrona Anko (Kotlin)
  • Android Kotlin .visibilidad
  • ¿Cómo entender una diversión con = en Kotlin?
  • Cómo usar la anotación de Jackson JsonSubTypes en Kotlin
  • Error de la biblioteca de la sala Android: no se puede encontrar el setter para el campo. (Kotlin)
  • Mapa de collections de Kotlin que causa un error de 'La comprobación de tipo se ha ejecutado en un error recursivo en Kotlin'