【问题标题】:How to inject nested classes using Dagger2如何使用 Dagger2 注入嵌套类
【发布时间】:2018-03-05 13:14:03
【问题描述】:

我正在开发 Android 应用程序。我正在使用 Dagger2 进行依赖注入。我可以使用这个库,但我不知道如何注入嵌套类。

        public class Parent {

            @Inject
            public Parent()
           {}

            public String getParent() {

                return "fifth";
            }

            class ParentSubClass{

             @Inject
             public ParentSubClass(){
             }

                public String getParentSubClass(){
                    return "subfifth";
                }

            }
    }


  class SomeTest{

  @Inject
  Parent.ParentSubClass subclass;


}

我知道注入父类但是如何为父子类创建对象

【问题讨论】:

    标签: android dagger-2


    【解决方案1】:

    @Inject 内部类不支持构造函数,因为 Dagger 在 logcat 中告诉我们:

    错误:@Inject 构造函数在内部类 public ParentSubClass() 上无效

    如果你想提供你的内部类,你应该使用@Provides 方法来提供它:

    @Provides
    internal fun provideSubclass() : ParentSubClass {
        return Parent().ParentSubClass()
    }
    

    【讨论】:

      【解决方案2】:

      示例中的嵌套类可以访问其所有父类属性,因此您可以在父类中注入所需的所有依赖项,然后在子类中使用这些依赖项。

      【讨论】:

      • 你误解了这个问题,我想访问其他类中的嵌套类属性
      • 请尝试改进您的示例,以便我更好地理解您的问题。
      • 我添加了一些测试类,我需要访问其他类的嵌套类
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      相关资源
      最近更新 更多