gpt4 book ai didi

java - 如何使用 Dagger2 实现工厂

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

我正在尝试使用 Dagger2 实现一个工厂,但我不知道如何实现?

在一个简化的例子中:

public class Foo{

public interface Factory{
Foo createNew();
}

private Bar bar;

public Foo(Bar bar){
this.bar= bar;
}
}

我想设置一个提供 Foo.Factory 实例的方法

@Module
public class TestModule{
@Provides
Bar provideBar(){
return new Bar();
}

@Provides
Foo.Factory provideFooFactory(){
// ??????
}
}

结果应该是这样的(当然是从模块中获取 Bar 实例):

new Foo.Factory(){
@Override
public Foo createNew() {
return new Foo(new Bar());
}
};

实现此目标的正确方法是什么?

最佳答案

我有一个可行的解决方案。如果你有更好的方法,请告诉我

@Module
public class TestModule{
@Provides
Bar provideBar(){
return new Bar();
}
@Provides
Foo provideFoo(Bar bar){
return new Foo(bar);
}

@Provides
Foo.Factory provideFooFactory(final Provider<Foo> fooProvider){
return new Foo.Factory(){
@Override
public Foo createNew() {
return fooProvider.get();
}
};
}
}

关于java - 如何使用 Dagger2 实现工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31872918/

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