我有一个简单的 pojo 类:
public class MySimpleClass {
private List<String> mDependency;
public MySimpleClass (List<String> dependency) {
mDependency = dependency;
}
}
我正在尝试使用 Dagger 2 使用依赖注入(inject)创建它。现在我有一个简单的模块和组件:
@Module
public class MySimpleClassModule {
@Provides
MySimpleClass provideMySimpleClass(List<String> dependency) {
return new MySimpleClass(dependency);
}
}
@Component(modules={MySimpleClassModule.class})
public interface MySimpleClassComponent {
}
但我不确定如何注入(inject) List<String>
每次我需要创建 MySimpleClass
的新实例时依赖.在上面的场景中,似乎我实际上需要添加 List<String>
到 MySimpleClassModule
的构造函数每次我需要 MySimpleClass
的新实例时都有该模块的新实例有了新的 List<String>
.那是对的吗?在这种特殊情况下,开销似乎很大。
最佳答案
不,不是。
我假设你遇到了 Dagger 的编译错误,因为从问题上看,你是否已经有一个提供这个字符串列表的模块是不清楚的。
要解决这个问题,您可以简单地:
@Module
public class MySimpleClassModule {
@Provides
List<String> provideListDependency() {
return Arrays.asList("One", "Two");
}
@Provides
MySimpleClass provideMySimpleClass(List<String> dependency) {
return new MySimpleClass(dependency);
}
}
如果您认为提供此列表应该是另一个模块的一部分,您可以移动它。最主要的是,Dagger 在编译过程中能够找到获取此依赖项的方法。
如果你不想在 over 中创建这个数组,你可以将方法标记为 @Singlethon
这样 dagger 就会缓存它。
关于java - 如何使用 Dagger 2 注入(inject) pojo 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442944/