我需要檢查一個類的字段是否爲List<String>
。我試着這樣做與下面的代碼:如何使用反射檢查對象的通用類型?
for (Field formField : formClass.getDeclaredFields()) {
...
if (formField.getGenericType().equals((Class<List<String>>)(Class<?>)List.class)) {
...
}
}
這似乎是一個錯誤的代碼,因爲formField.getGenericType().equals((Class<List<String>>)(Class<?>)List.class)
回報false
甚至,它實際上是一個List<String>
領域。
另一種方法是先測試一個字段是否爲List
與formField.getType().equals(List.class)
然後檢查它是否與formField.getGenericType() instanceof ParameterizedType
一致並最後檢查類型參數的類。
但我認爲有一個更短的方式來執行此檢查。在那兒?從示例