への変換を達成する方法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<?>
とし、カスタムロジックを使用して、各Generator
インスタンスのプロパティに基づいて適切な型パラメータに安全にキャストしたいと考えています。
私の問題は、コンセプチュアルレベルでチェックされていないタイプのパラメータにコミットしていないのに、タイプセーフティ警告なしでallGenerators
に割り当てる方法が見つからないということです。私は、生の型をワイルドカード型に変換したいだけです。
そこに行くのに@SuppressWarnings
を必要としないイディオムはありますか?
しかし、これは明らかにジェネレータgについての "生のタイプ"警告を与えます。 Eclipseでこの警告を無効にすることはできますが、それは私が目指していることではありません。 –
@MarkoTopolnik 'Generator >'を 'g 'の型として使用しても問題ありません。(少なくともコードはコンパイルされ、警告は出ません) – Raffaele
-Xlintを有効にする必要があります: IntelliJを使用して警告を表示するか、この設定を有効にして手動でコンパイルしてください。 –