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
Libérer: 2024-12-20 15:37:27
original
595 Les gens l'ont consulté

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.
Copier après la connexion

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() { /**/ }
    }
    Copier après la connexion

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();
      }
    }
    Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal