首页 > 解决方案 > 使用 Guice 在方法内创建对象的正确方法是什么

问题描述

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

如果我有下面这样的代码,那么创建 Class2 实例的正确方法是什么?Class1 是单例的,每次调用 search 时都需要创建一个新的 Class2 实例(所以我不能用构造函数字段注入它......)如果需要,我将重新组织代码。

@Singleton
final class Class1 {

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

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

}

标签: javaguice

解决方案


我想我找到了。需要为此类实例使用提供程序。在构造函数中获取类provider,使用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;
}

}

推荐阅读