使用Guice在Singleton对象的方法内部创建对象的正确方法是什么。
如果下面有一些类似的代码,那么创建Class2实例的正确方法是什么? Class1是单例,每次调用搜索时都需要创建一个Class2的新实例(因此我无法在构造函数字段中注入它……)我将在需要时重新组织代码。
@Singleton
final class Class1 {
@Inject
private Class1(...){...}
public Class2 search(...){
Class2 newInstance=...
return newInstance;
}
}
答案 0 :(得分:4)
我想我找到了。 需要为此类实例使用提供程序。 在构造函数中获取类提供者,并使用provider.get获取实例。
类似的东西:
@Singleton
final class Class1 {
Provider<Class2> p;
@Inject
private Class1(Provider<Class2> pParam;...){
p=pParam;
...
}
public Class2 search(...){
Class2 newInstance=p.get();
return newInstance;
}
}