使用Guice在方法内部创建对象的正确方法是什么

时间:2019-02-04 11:32:14

标签: java guice

使用Guice在Singleton对象的方法内部创建对象的正确方法是什么。

如果下面有一些类似的代码,那么创建Class2实例的正确方法是什么? Class1是单例,每次调用搜索时都需要创建一个Class2的新实例(因此我无法在构造函数字段中注入它……)我将在需要时重新组织代码。

@Singleton
final class Class1 {

@Inject
private Class1(...){...}

public Class2 search(...){
   Class2 newInstance=...
   return newInstance;
}

}

1 个答案:

答案 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;
}

}