メソッドを取得し、 をチェックしています。method.getParameterTypes()[0]
これはjava.util.List
. java.util.List<String>
しかし、たとえば、それが文字列を保持する必要があることを理解したい 場合など、含まれている型が何であるかを理解したいと思います。
どうすればいいですか?
ありがとう!
メソッドを取得し、 をチェックしています。method.getParameterTypes()[0]
これはjava.util.List
. java.util.List<String>
しかし、たとえば、それが文字列を保持する必要があることを理解したい 場合など、含まれている型が何であるかを理解したいと思います。
どうすればいいですか?
ありがとう!
Type listType = method.getGenericParameterTypes()[0];
if (listType instanceof ParameterizedType) {
Type elementType = ((ParameterizedType) listType).getActualTypeArguments()[0];
}
Class
要素の型は実際のlikeである必要はないことに注意してくださいString
-- 型変数、ワイルドカード型などである可能性があります。
リフレクションされたアイテムからジェネリック情報をスクレイピングする方法の詳細については、こちらとこちらをご覧ください。
簡単です。できません。コンパイル時に、Java はジェネリック型を消去します (「型の消去」を参照)。
詳細についてはhereとhereを参照してくださいGetGenericType
(正直なところ、私は知りませんでした) が、かなり限られているようです。