Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

501
Visualizações
¿Cómo resolver la herencia de segundo nivel con clases genéricas?

Estoy implementando una arquitectura MVP en Kotlin y Android Studio no muestra ningún error, sin embargo, no compila:

java.lang.AssertionError: el Descriptor resultante no debe ser nulo: CandidatoDescriptor: constructor BasePresenter (vista: Vista) definido en com.exmaple.base.BasePresenter sustitución: org.jetbrains.kotlin.types.IndexedParametersSubstitution@70144d7e en org.jetbrains.kotlin .resolve.calls.model.ResolvedCallImpl.setResultingSubstitutor(ResolvedCallImpl.java:205) ....

¿Es posible usar ConcreteView / ConcretePresenter en medio de la herencia?

código:

 /** * These are the base classes */ interface MvpView interface BaseView<Presenter : BasePresenter<*>> : MvpView, HasMvpView<MvpView> // to avoid circular dependency interface HasMvpView<View : MvpView> abstract class BaseMvpActivity<Presenter : BasePresenter<*>> : AppCompatActivity(), HasMvpView<MvpView> abstract class BaseMvpFragment<Activity : BaseMvpActivity<*>, Presenter : BasePresenter<*>>: Fragment(), HasMvpView<MvpView> { // this will cause the error abstract var presenter: Presenter } /** * There's a Viewpager, and each page looks the same the only difference is their source of data. That's why I tried implementing another level of abstraction over the base classes */ interface CategoryPagerView<Presenter: BasePresenter<*>> : BaseView<Presenter> abstract class CategoryPagerFragment: BaseMvpFragment<LandingActivity, BasePresenter<*>>() /** * A concrete type of the Viewpager's fragment, its presenter and the view */ interface ConcreteView : CategoryPagerView<ConcretePresenter> class ConcretePresenter(view: ConcreteView) : BasePresenter<*>(view) class ConcreteFragment : CategoryPagerFragment(), ConcreteView { // this line shows no error in the IDE, but in compile time override var presenter = ConcretePresenter(this)

¡Gracias por tu ayuda!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es un error de aserción interno lanzado por el compilador. Puede ver el código fuente del compilador donde se lanza esto:

https://github.com/JetBrains/kotlin/blob/master/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/model/ResolvedCallImpl.java

Aparentemente, el resultingDescriptor es null en un punto donde nunca debería ser null . Así que parece un error del compilador. Tal vez debería reescribirse en Kotlin para evitar problemas con null :)

Presente un informe de error en https://youtrack.jetbrains.com/issues/KT

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda