Google Guice 2.0 - PullRequest
       12

Google Guice 2.0

2 голосов
/ 06 августа 2010

У меня есть класс, который загружает некоторые файлы в определенный объект, который сам содержит несколько объектов, которые содержат разные поля.Пример:

class RootItem
{
public SubItemType1 sub1;
}

class SubItemType1
{
public SubItemType2 sub2;
public int data1;
public float data2;
}

class SubItemType2
{
public int data3;
public boolean data4;
}

Хорошо, теперь у меня есть другой класс, который содержит метод, который будет возвращать RootItem со всеми подэлементами, установленными на определенные значения.

Тогда я хотел бы,используя Guice, можно вызывать этот загрузчик один раз, а затем всякий раз, когда кто-то запрашивает @Inject класса SubItemType1, возвращается объект RootItem.sub1, а если кто-то запрашивает класс SubItemType2, то возвращается RootItem.sub1.sub2.1007 * Можно ли этого достичь?

Спасибо,

ExtremeCoder

1 Ответ

4 голосов
/ 06 августа 2010

В вашем модуле:

private RootItem rootItem; /* Initialize this field e.g. in the module's constructor */

@Provides
RootItem provideRootItem() {
    return rootItem;
}

@Provides
SubItemType1 provideSubItemType1() {
    return rootItem.sub1;
}

@Provides
SubItemType2 provideSubItemType2() {
    return rootItem.sub1.sub2;
}

Затем вы можете добавить RootItem, SubItemType1 и SubItemType2 в ваш код, как обычно.

...