比如:
接口:
public interface Converter<O,T> {
}```
抽象父类:
public abstract class AbstractStringConverter implements Converter{
}
真正实现类:
public class ClobStringConverter extends AbstractStringConverter{
}
需求是:
传入参数:ClobStringConverter.class,Converter.class,0
获得Class<Clob>
稍微思考了一下,发现有很多需要判断跟匹配的地方
最简单的一种:
/**
* @param index -- 表示要拿泛型列表中的第几个,通常是 0,也就是第一个
*/
public static Class getSuperClassGenricType(final Class clazz, final int index) {
Type genType = clazz.getGenericSuperclass();
if (!(genType instanceof ParameterizedType)) {
return Object.class;
}
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
if (index >= params.length || index < 0) {
return Object.class;
}
if (!(params[index] instanceof Class)) {
return Object.class;
}
return (Class) params[index];
}
如果要复杂并且全面的方法,可以到 Spring 的源码中找。。好象是 GenericTypeResolver.java
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。