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();

    结果:

  • 相关阅读:
    pyqt信号和槽传递额外参数
    PyQt--QTreeWidget
    转载:futex同步机制详解
    Linux 下的同步机制
    Linux 下线程的理解
    Linux下的物理内存管理2-slab缓存的管理
    转:C语言的编译链接过程的介绍
    LInux中ThreadInfo中的preempt_count字段
    LInux中的物理内存管理
    Linux下的内核抢占
  • 原文地址:https://www.cnblogs.com/zhima-hu/p/7655836.html
Copyright © 2011-2022 走看看