Maison >Java >javaDidacticiel >Erreur Dagger 2 : comment résoudre le problème « Impossible de fournir » ?

Erreur Dagger 2 : comment résoudre le problème « Impossible de fournir » ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-20 15:37:27712parcourir

Dagger 2 Error: How Do I Resolve

Erreur Dagger 2 : résoudre le problème « Impossible de fournir »

)Résumé du problème

Dagger 2 peut afficher l'erreur suivante lors de la compilation d'un projet :

error: com.example.MyDependency cannot be provided without an @Inject constructor or from an @Provides-annotated method.

Cette erreur indique que Dagger ne dispose pas des informations nécessaires pour créer ou fournir la dépendance spécifiée.

Comprendre le problème

Dagger nécessite un mécanisme pour fournir ou créer l’objet qu’il doit injecter. Par défaut, il s'attend à ce que les dépendances aient un constructeur annoté @Inject ou une méthode dans un module annotée avec @Provides.

Résolution

Il existe deux approches principales pour résoudre ce problème :

1. Ajoutez un constructeur annoté @Inject :

  • Ajoutez une annotation @Inject au constructeur de la classe de dépendance. Par exemple :

    class MyDependency {
      @Inject
      MyDependency() { /**/ }
    }

2. Créez une méthode @Provides-Annotée dans un module :

  • Créez une classe de module et ajoutez-y une méthode annotée avec @Provides. Cette méthode créera ou liera la dépendance souhaitée. Par exemple :

    @Module
    class MyModule {
      @Provides
      MyDependency provideMyDependency() {
          return new MyDependency();
      }
    }

Considérations supplémentaires

  • Assurez-vous que la dépendance fournie est la même que celle demandée.
  • Faites attention aux interfaces et aux superclasses. Fournissez l'implémentation ou l'extension si nécessaire.
  • Envisagez d'utiliser @Binds pour lier une classe d'implémentation à une interface ou une superclasse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn