使用Spring ApplicationContext及其方法getBeansOfType
我遇到了泛型類型的問題。這表明問題:如何實現從List <SomeParamType>到List的轉換<SomeParamType <?>>
class Test
{
List<Generator<?>> allGenerators =
new ArrayList(getBeansOfType(Generator.class).values()); // Raw type warning
// for new ArrayList()
<T> Map<String, T> getBeansOfType(Class<T> klass) {
return emptyMap();
}
}
interface Generator<R> {}
我從容器中檢索所有參數化類型的bean。我想讓它們爲Generator<?>
,並使用自定義邏輯根據每個實例的屬性安全地轉換爲相應的類型參數。
我的問題是,我找不到任何方式分配到allGenerators
沒有類型安全警告,即使在概念層面上,我沒有承諾任何未檢查的類型參數。我只想將原始類型轉換爲通配符類型。
有沒有什麼成語不需要@SuppressWarnings
去那裏?
但是,這清楚地給'Generator g'上的「原始類型」警告。您可以在Eclipse中禁用該警告,但這不是我想要的。 –
@MarkoTopolnik如果我使用'Generator >'作爲'g'的類型(至少代碼編譯並且我沒有收到任何警告),似乎可以。 – Raffaele
您必須在編譯器設置中啓用-Xlint:unchecked IntelliJ查看警告,或者在啓用此設置的情況下手動編譯它。 –