亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 Dagger 重寫 Component 的 Builder 接口

如何使用 Dagger 重寫 Component 的 Builder 接口

慕少森 2023-08-04 15:41:41
假設我有一個帶有 @Inject 注釋的 Student 類。public class Student {    private String name;    private Integer age;    @Inject    public Student(String name, Integer age) {        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }}然后我有一個模塊,在其中使用 @Provides 注釋添加所有必需的依賴項。@Modulepublic class StudentModule {    private String name;    private Integer age;    public StudentModule(String name, Integer age) {        this.name = name;        this.age = age;    }    @Provides    String provideName() {        return name;    }    @Provides    Integer provideAge() {        return age;    }}當然我還有 StudentComponent。@Component(modules = {StudentModule.class})public interface StudentComponent {    Student getStudent();    @Component.Builder    interface Builder {        @BindsInstance        Builder studentName(String studentName);        @BindsInstance        Builder studentAge(Integer studentAge);        StudentComponent build();    }}我想重寫 Builder,以便將值傳遞給構建器本身,而不是模塊。但每當我運行這個時,我都會收到錯誤:@Component.Builder is missing setters for required modules or components: [com.example.javadagger.StudentModule]
查看完整描述

1 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

@Component.Builder 缺少所需模塊或組件的設置器:[com.example.javadagger.StudentModule]

這意味著 Dagger 無法創建StudentModule(在您的情況下,因為它沒有默認構造函數)并且無法添加它。它說您需要在創建組件時提供模塊,但您沒有這樣做。

由于您希望直接通過構建器綁定參數,并且您僅使用該模塊來添加相同的兩種類型,因此問題的解決方案是完全刪除該模塊String。Integer不再需要了。

否則,如果由于某種原因您想要保留具有非默認構造函數的模塊,您還可以將所需的方法添加到構建器,如文檔所述:

  • ...

  • 每個具有非靜態綁定方法的非抽象模塊都必須有一個 setter 方法,除非 Dagger 可以使用可見的無參數構造函數實例化該模塊。

  • Dagger 可以實例化或不需要實例化的模塊可能有 setter 方法。


查看完整回答
反對 回復 2023-08-04
  • 1 回答
  • 0 關注
  • 144 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號