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

spring java 文章 2024-04-06 11:04 562 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群

相关文章
Spring中使用jdbcTemplate.queryForRowSet取值,日期丢失时分秒的解决方案
Spring里自带的数组集合用逗号拼接成字符串的方法
所有spring的bean都初始化完成,然后在执行某一方法
Java返回指定索引的泛型参数
druid 曝出No operations allowed after connection closed 解决方案
随便看看
老爷子收到了057128256416的电话号码 3122
阿里云com、cn域名续费优惠码(2020年3月可用) 2869
线上防疫题库正确答案 2938
线上防疫题库正确答案(多选题) 4833
微信设置不可以使用小程序(游戏小程序) 5644
adsense申请已经支付的订单回退的网址 3215
BT面板查看网站入口、账号密码的命令 6017
ucloud海外服务器超级优惠券 3278
根据您的消费情况,您的延停权益已发生变化,变更后的延停权益为延停额度20.00元 5835
为什么我们喜欢迈克尔杰克逊。 4168