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

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

Barbara Streisand
Lepaskan: 2024-12-20 15:37:27
asal
645 orang telah melayarinya

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.
Salin selepas log masuk

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() { /**/ }
    }
    Salin selepas log masuk

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();
      }
    }
    Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan