zoukankan      html  css  js  c++  java
  • ParameterizedType获取java泛型参数类型

    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();
        }
    
    }
  • 相关阅读:
    格子刷油漆【动态规划问题】—NYOJ 980
    Throughput Controller
    CSV Data Set Config 详细使用说明
    nmap使用笔记
    记三个有趣的漏洞
    Windows添加右键新增.md文件
    文件上传绕过WAF
    bypass_safedog
    漏洞挖掘之爆破的艺术
    特殊后缀上传(为什么用白名单不用黑名单)
  • 原文地址:https://www.cnblogs.com/soul-wonder/p/8984406.html
Copyright © 2011-2022 走看看