Привязка реализации по умолчанию в случае множественной реализации в Guice - PullRequest
0 голосов
/ 04 января 2019

У меня есть иерархия классов следующим образом:

interface Pen{}

class SimplePen implements Pen{}

class ComplexPen implements Pen{}

Код, использующий это, выглядит следующим образом

class A{
  public A(Pen pen){}
} 

class B{
  public B(ComplexPen pen){}
} 

Так что я хочу сделать, по умолчанию Pen должен быть привязан к SimplePenи ComplexPen должен быть привязан только при явном запросе, как в случае класса B.

bind(Pen.class).to(SimplePen.class).in(Singleton.class)
bind(ComplexPen.class)

Приведенная выше конфигурация Guice завершается неудачно во время выполнения, говоря implementation of Pen already bound.Как мне это сделать?

Заметка пытается избежать .annotatedWith(Names.named("complexPen"))

1 Ответ

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

Мой плохой, код, который я дал, работает.У меня был дополнительный код, который создавал больше привязок.

bind(Pen.class).to(SimplePen.class).in(Singleton.class)
bind(ComplexPen.class)
...