Связывание экземпляра HashMap в Guice - PullRequest
0 голосов
/ 19 декабря 2011

У меня есть метод, который возвращает Map ():

private Map<String, Catalog> readCatalogFromXml(String xmlFile) {
    // blah blah read XML via DOM
}

Однако мне нужно привязать результаты этого вызова к одному экземпляру, который будет внедрен в несколько классов.Я просматривал документы для MapBinder, но я в замешательстве.Я, наверное, упускаю что-то простое, кто-нибудь может помочь?

Джейсон

Ответы [ 2 ]

4 голосов
/ 19 декабря 2011

Просто внедрите провайдера в свой класс Module:

public class ModuleImpl extends AbstractModule {
    @Override
    protected void configure() {
        // bind whatever needed
    }

    @Singleton
    @Provides
    Map<String, Catalog> provideMap(@XMLFile String xmlFile) {
        // create an instance of your class
        return myClass.readCatalogFromXml(xmlFile);
    }
}
3 голосов
/ 19 декабря 2011

Если вам просто нужно вставить возвращенную Карту, я бы ...

  1. определил подкласс "@Singleton public class MyInjectedMap extends HashMap {}"
  2. bind a Provider для создания экземпляров
...