次のシグネチャを持つメソッドがあります。
<T> T getBody(Class<T> type)
body オブジェクトを指定された型として返します。タイプのオブジェクトを返すためにそれを呼び出すにはどうすればよいですか
Iterable<OProperty<?>>
私はジェネリックの前に多くのJavaをやったので、私のプログラマーfuはこれらの状況では少し錆びています:)
これは ではできませんClass<T>
。パラメータ化できるT
のは raw 型のみです ( は使用できますが、 は使用できません)。Class
Class<List>
Class<List<String>>
Class
ジェネリックはうまく連携しません。Class
具体的なランタイム型を表すためのものですが、ジェネリックはコンパイル時にあります。Class<Iterable>
やなどが必要Class<Iterable<Something>>
ですが、実行時にはそのようなオブジェクトは 1 つしかありません。これらの用途すべてに適合するタイプはありません。Java が選択しClass<Iterable>
ました。
疑わしい未チェックのキャストを使用して、適切な型を渡すことができます。
getBody(Class<Iterable<OProperty<?>>>)(Class<?>)Iterable.class)