zoukankan      html  css  js  c++  java
  • 通过泛型获得继承类的类原型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();

    结果:

  • 相关阅读:
    ClassLoader类加载器
    java反射(二)--反射应用案例
    java反射(一)--认识反射机制
    javaIO流(四)--输入与输出支持
    javaIO流(三)--IO深入操作
    javaIO流(二)--字节流与字符流
    javaIO流(一)--File类的基本使用
    python文件读写
    python的logging模块
    查看python版本
  • 原文地址:https://www.cnblogs.com/zhima-hu/p/7655836.html
Copyright © 2011-2022 走看看