Как правильно создавать объекты внутри метода, используя Guice? - PullRequest
0 голосов
/ 04 февраля 2019

Как правильно создать объекты внутри метода объекта Singleton, используя Guice.

Если у меня есть некоторый код, подобный приведенному ниже, каков правильный способ создания экземпляров Class2?Class1 является одноэлементным и должен создавать один новый экземпляр Class2 каждый раз, когда вызывается поиск (поэтому я не могу внедрить его в поле конструктора ...). При необходимости я реорганизую код.

@Singleton
final class Class1 {

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

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

}

1 Ответ

0 голосов
/ 04 февраля 2019

Я думаю, что нашел это.Нужно использовать провайдеров для таких случаев.Получите провайдер класса в конструкторе и используйте 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;
}

}
...