• java 利用反射构造泛型类


    1、构造BaseDao泛型类

    class BaseDao<T>{
    
         private Class<T> entityClass;
         
        // 通过反射获取实际运行的精确类
        public BaseDao() {
            Type genType = getClass().getGenericSuperclass();
            Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
            entityClass=(Class<T>) params[0];
        }
        
        //泛型的实际类型参数的类全名
        public String getEntityName(){       
            return entityClass.getName();
        }
        
        //泛型的实际类型参数的类名
        public String getEntitySimpleName(){
            return entityClass.getSimpleName();
        }
    
        //泛型的实际类型参数的Class
        public Class<T> getEntityClass() {
            return entityClass;
        }
    }

    2、User实现类

    class User extends BaseDao<User>{
        
    }

    3、测试类:

    public class TestReflect {
    
        public static void main(String[] args) {
            User u1=new User();
            System.out.println(u1.getEntityClass());                        
            System.out.println(u1.getEntityName());                
            System.out.println(u1.getEntitySimpleName()); 
        }
    }

    输出结果为;

    class Reflection.User
    Reflection.User
    User

    注意:

    BaseDao类不能够直接来使用,而是应该通过其子类来使用,Base 应该用来作为一个基类,我们要用的是它的具体的子类

  • 相关阅读:
    DataGrip连接MySql数据库
    IDEA版本控制-Git
    IDEA关联MySql数据库
    ESXi平滑升级
    Dell服务器安装vGPU
    索引
    数据类型
    部署Zabbix监控平台
    部署Cacti监控平台
    常用系统监控命令
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5650650.html
Copyright © 2020-2023  润新知