Rumah >Java >javaTutorial >Ralat Dagger 2: Bagaimana Saya Menyelesaikan 'Tidak Dapat Disediakan'?

Ralat Dagger 2: Bagaimana Saya Menyelesaikan 'Tidak Dapat Disediakan'?

Barbara Streisand
Barbara Streisandasal
2024-12-20 15:37:27597semak imbas

Dagger 2 Error: How Do I Resolve

Ralat Keris 2: Selesaikan Isu "Tidak Boleh Disediakan"

)Ringkasan Masalah

Dagger 2 mungkin memaparkan ralat berikut semasa menyusun a projek:

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

Ralat ini menunjukkan bahawa Dagger kekurangan maklumat yang diperlukan untuk mencipta atau memberikan pergantungan yang ditentukan.

Memahami Isu

Dagger memerlukan mekanisme untuk menyediakan atau mencipta objek yang perlu disuntik. Secara lalai, ia menjangkakan kebergantungan mempunyai pembina beranotasi @Inject atau kaedah dalam modul beranotasi dengan @Provides.

Resolution

Terdapat dua pendekatan utama untuk menyelesaikan isu ini:

1. Tambahkan @Inject Annotated Constructor:

  • Tambah anotasi @Inject kepada pembina kelas dependensi. Contohnya:

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

2. Cipta Kaedah @Provides-Annotated dalam Modul:

  • Buat kelas modul dan tambahkan kaedah yang dianotasi dengan @Provides padanya. Kaedah ini akan mencipta atau mengikat pergantungan yang diingini. Contohnya:

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

Pertimbangan Tambahan

  • Pastikan tanggungan yang diberikan adalah sama dengan yang diminta.
  • Beri perhatian kepada antara muka dan kelas super. Sediakan pelaksanaan atau sambungan apabila perlu.
  • Pertimbangkan menggunakan @Binds untuk memautkan kelas pelaksanaan kepada antara muka atau superclass.

Atas ialah kandungan terperinci Ralat Dagger 2: Bagaimana Saya Menyelesaikan 'Tidak Dapat Disediakan'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn