Java返回指定索引的泛型参数

spring java 文章 2024-04-06 11:04 520 0 全屏看文

AI助手支持GPT4.0

有的时候我们需要获取泛型的指定索引的参数,就可以使用下面的代码。

/**
 * <p>
 * 反射对象获取泛型
 * </p>
 *
 * @param clazz 对象
 * @param index 泛型所在位置
 * @return Class
 */
public static Class<?> getSuperClassGenericType(final Class<?> clazz, final int index) {
    Type genType = clazz.getGenericSuperclass();
    if (!(genType instanceof ParameterizedType)) {
        logger.warn(String.format("Warn: %s's superclass not ParameterizedType", clazz.getSimpleName()));
        return Object.class;
    }
    Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
    if (index >= params.length || index < 0) {
        logger.warn(String.format("Warn: Index: %s, Size of %s's Parameterized Type: %s .", index,
                clazz.getSimpleName(), params.length));
        return Object.class;
    }
    if (!(params[index] instanceof Class)) {
        logger.warn(String.format("Warn: %s not set the actual class on superclass generic parameter",
                clazz.getSimpleName()));
        return Object.class;
    }
    return (Class<?>) params[index];
}


使用方法:

public abstract class CrudServiceImpl<M extends BaseMapper<T>, T, D> extends BaseServiceImpl<M, T> implements CrudService<T, D> {

    protected Class<D> currentDtoClass() {
        return (Class<D>)ReflectionKit.getSuperClassGenericType(getClass(), 2);
    }
}


这样操作就可以获取到当前类的第三个泛型参数了。


-EOF-

AI助手支持GPT4.0


国内超级便宜服务器

摸鱼人热门新闻聚合

钻级赞助商 我要加入

开发者在线工具

第三方支付技术请加QQ群

相关文章
怎么在jdk里指定 activeprofile呢
所有spring的bean都初始化完成,然后在执行某一方法
springJdbcTemplate 执行 sql中包含in的用法
druid 曝出No operations allowed after connection closed 解决方案
spring security中 UsernamePasswordAuthenticationToken 内部处理的详细步骤。
随便看看
微信开放平台跟公众平台有什么区别? 3517
怎么添加小程序支付功能? 4312
教育科技公司申请微信支付被拒绝? 4695
微信公众号免300认证教程 5776
小程序已经上线,作为管理员无法在小程序数据助手查看数据? 5187
小程序广告组件通过审核,但是小程序内没有显示广告? 4961
企业微信通讯录账号被管理员误/恶意删除,怎么办? 9389
问题? 8910
如何快速搭建抽奖助手小程序(无需代码知识) 6039
许涛 大哥在吗, 要解冻小程序的时候提示信息主体不一致, 能帮忙看下吗? 7343