zoukankan      html  css  js  c++  java
  • 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 应该用来作为一个基类,我们要用的是它的具体的子类

  • 相关阅读:
    Fiddler的使用
    vue后台管理系统搭建
    有效的山脉数组
    从中序与后序遍历序列构造二叉树
    从前序与中序遍历序列构造二叉树
    最大二叉树
    填充每个节点的下一个右侧节点指针
    二叉树展开为链表
    翻转二叉树
    Java判断字符串是否为数字
  • 原文地址:https://www.cnblogs.com/SaraMoring/p/5650650.html
Copyright © 2011-2022 走看看