7

このシグネチャを使用して、ライブラリからメソッドを呼び出しています。

public <T> T get(Class<T> c)

List<MyClass>そして、戻り値として aを取得したいと思います。ただし、このように呼び出すとコンパイルされません (「パラメーター化された型から選択できません」)。

List<MyClass> myClasses = get(List<MyClass>.class);

これはコンパイルされますが、警告が表示されます。

List<MyClass> myClasses = get(List.class);

警告には「未チェックの割り当て」と表示されます。この警告を回避し、リストのキャストを回避するにはどうすればよいですか?

4

2 に答える 2

3

ここではジェネリックを使用しているため、リスト内のアイテムの基になるタイプは実行時に消去され、コンパイラはコンパイル時にチェックできないことを認識しているため、警告が表示されます。ここでジェネリック型を使用すると、警告を回避できなくなります。実行しているキャストが例外につながらないことが確実にわかっている場合は、それを抑制することができます。

@SuppressWarnings("unchecked")
于 2013-05-13T20:07:00.147 に答える