クラスフィールドがList<String>
かどうかを確認する必要があります。私は、次のコードでそれを行うことを試みた:Reflectionを使用してオブジェクトの汎用タイプを検査するにはどうすればよいですか?
for (Field formField : formClass.getDeclaredFields()) {
...
if (formField.getGenericType().equals((Class<List<String>>)(Class<?>)List.class)) {
...
}
}
は、間違っているコードのようですので、formField.getGenericType().equals((Class<List<String>>)(Class<?>)List.class)
戻っても、実際にList<String>
あるフィールド上false
。
もう1つの方法は、フィールドがList
とformField.getType().equals(List.class)
であるかどうか最初にテストし、formField.getGenericType() instanceof ParameterizedType
で汎用であることを確認し、最後にタイプ引数のクラスをチェックします。
しかし、私はこのチェックを実装する方法がより短いと思います。ある?例から