gpt4 book ai didi

java - 如何使用 Dagger 2 注入(inject) pojo 依赖项?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:04 25 4
gpt4 key购买 nike

我有一个简单的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com