工具类篇3——反射工具类(获取泛型类型)

前序

整理了两个最靠谱的泛型类类型获取方法,快来看看

子目录

《工具类篇3——反射工具类(方法反射)》
《工具类篇3——反射工具类(对象反射)》
《工具类篇3——反射工具类(获取泛型类型)》


工具类全都是阿里代码规范与SonalLint扫描通过的,可以放心使用!

本工具包的公网Maven引用地址如下

<dependency>
    <groupId>com.gitee.taotaojs</groupId>
    <artifactId>comn-basic</artifactId>
    <version>1.0.0</version>
</dependency>

直接引用即可。
之后我也会出一个关于上传公网的踩坑手册,以及发布一下我用的CheckStyle文件检查相关异味,敬请期待!

【附上仓库地址】
阿里云的Maven仓库
sonatype仓库

主要功能

  • 获取Class中的泛型类类型

功能详解

在使用了泛型的类中继承此类,即可使用setIndex来获取第index个泛型的类类型

具体代码

package com.gitee.taotaojs.util.reflect;

import lombok.Data;

import java.lang.reflect.ParameterizedType;

/**
 * 在代码块中使用setIndex(index)设置获取的泛型坐标
 * @author TaoTaojs
 * @date 2019年11月19日15:56:28
 * 关联类:
 * 参考链接:
 */
@Data
public class GenericityOperationSuper<T> {

	/** 泛型的类型 */
	private Class<T> entityClass;

	/** 被获取的泛型的下标,可自设定 */
	private int index = 0;

	public GenericityOperationSuper(){
		baseHibernateEntityDao();
	}

	public GenericityOperationSuper(int i){
		setIndex(i);
		baseHibernateEntityDao();
	}

	@SuppressWarnings("unchecked")
	public void baseHibernateEntityDao() {
		entityClass =(Class<T>) ((ParameterizedType) getClass()
	                                .getGenericSuperclass()).getActualTypeArguments()[index];
	}

}


PS:什么?父类不够用了?想要简单点,那直接用下面的方法


方法二

  1. 在类上增加一个class属性
  • 在类的构造方法上使用ParameteriaedType初始化calss属性
  • 要哪个泛型类型,就写指定的下标即可

具体代码如下

    /** 不要导错包哈 */
    import java.lang.reflect.ParameterizedType;
class XXX<T, V>(){}
    /** 泛型类类型 */
    protected final Class<T> clazz;
    protected final Class<T> clazzDTO;

    XXX(){
        ParameterizedType type = (ParameterizedType) this.getClass()
                .getGenericSuperclass();
        this.clazz = (Class<T>) type.getActualTypeArguments()[0];
        this.clazzDTO = (Class<V>) type.getActualTypeArguments()[1];
    }

文章链接

《工具类篇1——POI工具类》——待更新
《工具类篇2——集合工具类》
《工具类篇3——反射工具类》(共三篇)
《工具类篇4——大数字工具类》(共三篇)——待更新
《工具类篇5——时间戳工具类》(共两篇)——待更新
《工具类篇6——字符串工具类》——待更新
《工具类篇7——线程池工具类》——待更新
《…》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值