zoukankan      html  css  js  c++  java
  • Java反射之getGenericSuperclass()用法

    父类

    package com.itheima.mytest;

    public class Person<T1, T2> {

    }

    子类

    package com.itheima.mytest;

    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;

    public class Student extends Person<IntegerString{

        @SuppressWarnings("rawtypes")
        public static void main(String[] args) {
            Student student = new Student();
            // getClass() 获得该类的类类型(即类型变量)
            Class clazz = student.getClass();
            // getSuperclass() 获得该类的父类
            System.out.println(clazz.getSuperclass());

            // getGenericSuperclass() 获得该类带有泛型的父类
            Type type = clazz.getGenericSuperclass();
            System.out.println(type);
            // Type是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。

            // ParameterizedType 参数化类型,即泛型
            // 将Type转化为参数化类型(即泛型)
            ParameterizedType p = (ParameterizedType) type;

            // getActualTypeArguments() 获取参数化类型的数组,泛型可能有多个
            Type[] actualTypeArguments = p.getActualTypeArguments();

            // 将Type转化为类型变量(即Class)
            Class c1 = (Class) actualTypeArguments[0];
            Class c2 = (Class) actualTypeArguments[1];
            System.out.println(c1);
            System.out.println(c2);
        }
    }

    运行结果

    class com.itheima.mytest.Person
    com.itheima.mytest.Person<java.lang.Integerjava.lang.String>
    class java.lang.Integer
    class java.lang.String

    参考链接:
      https://blog.csdn.net/qq_26424655/article/details/71515741

  • 相关阅读:
    DOM事件
    DOM样式操作
    asp.net-枚举绑定控件
    微信站点 点击 “退回” 按钮退回到主菜单
    阻止iOS中页面弹性回滚,只允许div.phone_body的区块有弹性
    asp.net 微信开发失效汇总
    ECharts使用心得
    PV、UPV、UV简介
    微信浏览器取消缓存的方法
    Visual Studio 2015简体中文企业版/专业版下载+有效激活密钥
  • 原文地址:https://www.cnblogs.com/chenmingjun/p/9734239.html
Copyright © 2011-2022 走看看