ParameterizedType

    • getClass().getGenericSuperclass() 
      返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type,然后将其转换ParameterizedType。
    • getActualTypeArguments() 
      返回表示此类型实际类型参数的 Type 对象的数组。[0]就是这个数组中第一个了。简而言之就是获得超类的泛型参数的实际类型。

Base Service

public abstract class BaseService<T> implements ServiceInterface<T> {

    private Class<T> clazz;

    /**
* 实体管理器引用
*
* @return EntityManager
*/
protected abstract EntityManager getEntityManager(); /**
* DAO接口引用
*
* @return DAOInterface<T>
*/
protected abstract DAOInterface<T> getDAOInterface(); /**
* 构造函数反射泛型对象真实类型
*/
@SuppressWarnings("unchecked")
public BaseService() {
// 获取当前new的对象的泛型父类
ParameterizedType pType = (ParameterizedType) this.getClass().getGenericSuperclass();
// 获取类型参数的真是值,就是泛型参数的个数;
this.clazz = (Class<T>) pType.getActualTypeArguments()[0];
} @Override
public T find(String id) throws Exception {
return getEntityManager().find(clazz, id);
} @Override
public T save(T t) throws Exception {
T save = getDAOInterface().save(t);
return save;
} @Override
public void update(T t) throws Exception {
getEntityManager().merge(t); } @Override
public void del(String id) throws Exception {
T t = getEntityManager().find(clazz, id);
if (t != null) {
getEntityManager().remove(t);
}
} @Override
public List<T> findAll() throws Exception {
return getDAOInterface().findAll();
} }

ParameterizedType获取java泛型参数类型的更多相关文章

  1. 利用ParameterizedType获取泛型参数类型

    //利用ParameterizedType获取java泛型的参数类型 public class Demo {     public static void main(String[] args) { ...

  2. Java 泛型 通配符类型

    Java 泛型 通配符类型 @author ixenos 摘要:限定通配符类型.无限定通配符类型.与普通泛型区别.通配符捕获 通配符类型 通配符的子类型限定(?都是儿孙) <? extends ...

  3. Java泛型:类型擦除

    类型擦除 代码片段一 Class c1 = new ArrayList<Integer>().getClass(); Class c2 = new ArrayList<String& ...

  4. Java泛型之类型擦除

    类型擦除 学过C++模板的,在使用Java泛型的时候,会感觉到有点不疑问,例如:(1)无法定义一个泛型数组.无法调用泛型参数对象中对应的方法(当然,通过extends关键字是可以做到,只是比较麻烦): ...

  5. JAVA基础_反射获取泛型参数类型

    我经常会想获取参数的实际类型,在Hibernate中就利用的这一点. domain: Person.java public class Person { // 编号 private Long id; ...

  6. Java泛型之类型未被擦除

    大家都知道Java源码在编译之后会擦除泛型信息,现在来看一种泛型未被擦除的情况,见ConcurrentHashMap.comparableClassFor方法. ParameterizedType.g ...

  7. Java泛型-类型擦除

    一.概述 Java泛型在使用过程有诸多的问题,如不存在List<String>.class, List<Integer>不能赋值给List<Number>(不可协变 ...

  8. 转:有关Java泛型的类型擦除(type erasing)

    转载自:拈花微笑 自从Java 5引入泛型之后,Java与C++对于泛型不同的实现的优劣便一直是饭后的谈资.在我之前的很多training中,当讲到Java泛型时总是会和C++的实现比较,一般得出的结 ...

  9. java 泛型的类型擦除与桥方法

    泛型类 --代码参考:java核心技术 卷1 第十版 public class Pair<T> { private T first; private T second; //构造器 pub ...

随机推荐

  1. UVA.12169 Disgruntled Judge ( 拓展欧几里得 )

    UVA.12169 Disgruntled Judge ( 拓展欧几里得 ) 题意分析 给出T个数字,x1,x3--x2T-1.并且我们知道这x1,x2,x3,x4--x2T之间满足xi = (a * ...

  2. NOIWC2017&&THUWC2017 滚粗记

    因为NOI WC的时候一直在生病,浑浑噩噩就过去了7天,基本没什么记忆了,所以就压到一篇里好了. day -1 第一次发现高铁的椅子原来还可以转过来,于是我们四个小伙伴面对面愉快的打了一路宣红A. 在 ...

  3. NIN (Network In Network)

    Network In Network 论文Network In Network(Min Lin, ICLR2014). 传统CNN使用的线性滤波器是一种广义线性模型(Generalized linea ...

  4. 【Asp.net入门16】第一个ASP.NET 应用程序-总结

    本章创建了一个新的ASP.NET项目,并用它创建了一个简单的数据输入应用程序,向你初步介绍 了ASP.NET平台.本章省略了许多重要的功能,只为向你说明ASP.NET应用程序所执行的核心操作—— 使用 ...

  5. Casting a Classifier into a Fully Convolutional Network将带全连接的网络做成全卷积网络

    详见:http://nbviewer.jupyter.org/github/BVLC/caffe/blob/master/examples/net_surgery.ipynb 假设使用标准的caffe ...

  6. python中的模块及路径

    python在import module的时候 是按照以下顺序去import一个module的: 1. 首先判断这个module是不是built-in即内建模块, 如果是则引入内建模块,如果不是则在一 ...

  7. Java基础-程序流程控制第二弹(循环结构)

    Java基础-程序流程控制第二弹(循环结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 流程控制有三种基本结构:顺序结构,选择结构和循环结构.一个脚本就是顺序结构执行的,选择结 ...

  8. Vue组件穿透

    1. element ui怎么修改单独一个label的颜色 用 >>> 进行组件的穿透

  9. MAC 下用 Common Lisp 调试 OpenGL 程序

    MAC 下用 Common Lisp 调试 OpenGL 程序 环境搭建 运行环境: OSX 10.11.3 EI Capitan Common Lisp: SBCL 使用 SBCL, 首先要安装这几 ...

  10. (一)在Lingo中使用集合

    1.    在Lingo中使用集合 4.1 集合的基本用法和lingo模型的基本要素 Lingo虽然使用方便,但是如果要解决几万个,几十万个变量的优化问题时,我们总不能一个一个地列出x1,x2,…,x ...