如何在下面的Guice綁定代碼中抽象出Option類型,用通用參數代替Option
?如何編寫通用的Guice綁定函數?
ArrayList<Class<? extends Option>> options =
new ArrayList<Class<? extends Option>>();
bindMultibinder(annotation, options);
public Key<Set<Option>> bindMultibinder(
Named annotation, ArrayList<Class<? extends Option>> contents) {
Multibinder<Option> options =
Multibinder.newSetBinder(binder(), Option.class, annotation);
for (Class<? extends Option> option : contents) {
options.addBinding().to(option);
}
final Key<Set<Option>> multibinderKey =
Key.get(new TypeLiteral<Set<Option>>(){}, annotation);
return multibinderKey;
}
「泛型相當於」絕不等同於你的第一個例子,因爲你沒有提供一種方法讓編譯器知道T的值是什麼。 – DwB 2011-12-29 19:34:59
對不起@DwB,但我不認爲這是是這樣的。編譯器可以並且正確地推斷出T的正確類型。我推測它是從bindMultibinder方法中的類 superClass參數中這樣做的。也許你沒有看到這個參數? –
2011-12-29 19:52:50