• 通过泛型获得继承类的类原型getGenericSuperclass


    首先贴上代码

    package com;
    
    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    
    /**
     * Created by huyanxia on 2017/10/12.
     */
    public class Test {
        public static void main(String[] args) {  
         Human human = new Human();
         //调用测试
         human.getClasses();
        }
    }
    //泛型类Person
    class Person <E>{
        String entityClassName;//类名称
        public Class<E> entityClass;//类原型
        public void getClasses(){
            Class<? extends Person> clazz = this.getClass();//this是human的对象,clazz的值是class com.Human
            Type type = clazz.getGenericSuperclass();//获得clazz的父类,type的值com.Person<com.Hobby>
            Type type1= ((ParameterizedType)type).getActualTypeArguments()[0];//获得父类的泛型参数的类型,0表示第一个参数,type1的值是class com.Hobby
            this.entityClass =  (Class<E>)type1;//class com.Hobby
            this.entityClassName = this.entityClass.getSimpleName();//Hobby
        }
    }
    class Human extends Person<Hobby>{
        String hobby ;
    }
    class Hobby{
    
    }

    getClasses方法可以简写

    Class<? extends Person> thisClass = this.getClass();
    entityClass = (Class<E>) ((ParameterizedType) thisClass.getGenericSuperclass()).getActualTypeArguments()[0];
    entityClassName = entityClass.getSimpleName();

    结果:

  • 相关阅读:
    selenium登录csdn,urllib抓取数据
    selenium登录12306,requests抓取数据
    加一
    最后一个单词的长度
    最大子序和
    搜索插入位置
    实现strStr()
    二分查找
    内存对齐
    is_pod类型
  • 原文地址:https://www.cnblogs.com/zhima-hu/p/7655836.html
Copyright © 2020-2023  润新知