リフレクション ポストを使用して Java でジェネリック パラメーターの型を取得することを読みましたが、それがどのように可能になるのか疑問に思いました。誰かが投稿したソリューションとコードを使用しました
List<Integer> l = new ArrayList<>();
Class actualTypeArguments = (Class) ((ParameterizedType) l.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
しかし、これは私にはうまくいきません。
java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
クラス キャストを削除すると、実際の引数の型は になりE
ます。これは List インターフェイスからの型定義です。
したがって、私の質問は、ここで何か間違ったことをしているのでしょうか? コンパイル時に型が消去されるはずなので、この動作は私が予想していたものですよね?