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
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!