获取泛型的Class

432 阅读1分钟

起因

在有自己封装的公司中, 经常会编写一些泛型和通用的crud服务类等等, 但在使用easyexcel和jackson的时候, 又需要目标类的Class

这种情况下, 如何获取泛型的Class成为困扰我很久的东西

解决方案

没什么技术含量可讲解, 直接上代码:

public abstract class BaseDeviceService<T extends Device, TD> extends BaseSearchableService<T, TD> {

  private final Class<T> tClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
  
}

方法名都非常直接了, 主要使用的就是ParameterizedType