Rumah >Java >javaTutorial >Bagaimana untuk Membetulkan Ralat 'tidak boleh disediakan' Dagger 2?

Bagaimana untuk Membetulkan Ralat 'tidak boleh disediakan' Dagger 2?

Barbara Streisand
Barbara Streisandasal
2024-12-10 16:02:14258semak imbas

How to Fix Dagger 2's

Membetulkan Ralat Dagger 2: "... tidak boleh disediakan [...]"

Ralat ini berlaku apabila Dagger 2 tidak dapat menyediakan kebergantungan tanpa pembina beranotasi atau kaedah beranotasi dengan @Provides. Untuk menyelesaikannya:

1. Tambah @Inject Constructor

Tambahkan @Inject anotasi pembina pada kelas yang tidak disediakan:

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

Dagger kemudian akan menggunakan pembina ini untuk mencipta contoh.

2. Cipta Kaedah @Provides dalam Modul

Sebagai alternatif, buat kaedah beranotasi dengan @Provides dalam modul yang mengembalikan kebergantungan:

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

Dagger akan menggunakan kaedah ini untuk mencipta dan berikan pergantungan.

Tambahan Pertimbangan

  • Pastikan bahawa kebergantungan yang disediakan adalah jenis yang sama dengan kebergantungan yang diminta (iaitu, bukan kelas super atau antara muka).
  • Sahkan bahawa komponen menyediakan kebergantungan ( cth., MyComponent.myDependency()).
  • Jika menggunakan antara muka, gunakan @Binds untuk menentukan pelaksanaan yang disediakan.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'tidak boleh disediakan' Dagger 2?. 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