[英]get generic type from object list java
我有dozer框架的自定義轉換器
constom轉換器調用泛型類型列表源和泛型類型列表目標
public class ListCommonCustomConverter implements ConfigurableCustomConverter{
public Object convert(Object destination, Object source, Class<?> destinationClass, Class<?> sourceClass) {
log.info("Inside CommonCustomConverter :: convert");
// Need to fine generic type of list
return null;
}
}
例如:如果List<Person>
作為轉換器的目的地傳遞,我需要從轉換器方法內的目標對象獲取Person類。
預先感謝。
您可以通過調用getClass().getGenericInterfaces()
來獲取泛型類型的類型信息getClass().getGenericInterfaces()
如果您的類被聲明為: getClass().getGenericInterfaces()
public class ListCommonCustomConverter implements ConfigurableCustomConverter<Person>
但是由於這個轉換器沒有參數化,你可以做一個技巧:
public interface CustomConverterWithTypeInfo<T> extends ConfigurableCustomConverter{
}
public class ListCommonCustomConverter implements CustomConverterWithTypeInfo<Person>{
public Object convert(Object destination, Object source, Class<?> destinationClass, Class<?> sourceClass) {
Class<?> myClass = (Class)((ParameterizedType)getClass().getGenericInterfaces()[0]).getActualTypeArguments()[0];
//...
}
}
或者你可以簡單地做:
List<?> list = (List)destination;
if(!list.isEmpty()){
Class<?> myClass = list.get(0).getClass();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.