14

メソッドを取得し、 をチェックしています。method.getParameterTypes()[0]これはjava.util.List. java.util.List<String>しかし、たとえば、それが文字列を保持する必要があることを理解したい 場合など、含まれている型が何であるかを理解したいと思います。

どうすればいいですか?

ありがとう!

4

3 に答える 3

25
Type listType = method.getGenericParameterTypes()[0];
if (listType instanceof ParameterizedType) {
    Type elementType = ((ParameterizedType) listType).getActualTypeArguments()[0];
}

Class要素の型は実際のlikeである必要はないことに注意してくださいString-- 型変数、ワイルドカード型などである可能性があります。

リフレクションされたアイテムからジェネリック情報をスクレイピングする方法の詳細については、こちらこちらをご覧ください。

于 2013-01-18T16:43:11.210 に答える
3

簡単です。できません。コンパイル時に、Java はジェネリック型を消去します (「型の消去」を参照)。

詳細についてはherehereを参照してくださいGetGenericType(正直なところ、私は知りませんでした) が、かなり限られているようです。

于 2013-01-18T15:54:19.067 に答える