Я полный новичок в Guice и пытаюсь достичь следующего:
public class Apple {
private final Integer size;
public Apple(Integer size) {
this.size = size;
}
}
public abstract class AppleModule {
protected AppleModule() {
ImmutableSet<Integer> sizes = ImmutableSet.of(1, 2, 3);
ImmutableSet<Apple> apples = sizes.stream().map(Apple::new).collect(ImmutableSet.toImmutableSet());
bind(new ImmutableSet<Apple>(){}).toInstance(apples);
}
}
так что каждый раз, когда я объявляю что-то вроде ImmutableSet<Apple> apppleBasket;
, мне вводится один и тот же объект списка. (но ImmutableSet
s других типов по-прежнему ведут себя как обычно)
Но приведенный выше код не работает с bind(...)
, говоря Class must either be declared abstract or implement abstract method error
Примечание. Я немного упростил код, над которым работаю, при написании вопроса, поэтому вышеописанное может не скомпилироваться из коробки.