我有推土机框架的自定义转换器
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类。
先谢谢。
答案 0 :(得分:1)
如果您的类声明为:{/ p>,则可以通过调用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();
}