JAVA反射-getGenericSuperclass()用法

复制代码
package com.mycode.test;
 
public class Person<T1,T2> {
    
}

###############
public class Student extends Person<Integer, Boolean> {
 
    @SuppressWarnings("rawtypes")
    public static void main(String[] args) {
        
        Student student = new Student();
        Class clazz = student.getClass();//getSuperclass()获得该类的父类
        System.out.println(clazz.getSuperclass());
        
        /**
         * getGenericSuperclass()获得带有泛型的父类
         * Type是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
         */
        Type type = clazz.getGenericSuperclass();
        System.out.println(type);
        
        //ParameterizedType参数化类型,即泛型
        ParameterizedType p = (ParameterizedType)type;
        //getActualTypeArguments获取参数化类型的数组,泛型可能有多个
        Class c1 = (Class)p.getActualTypeArguments()[0];
        System.out.println(c1);
        Class c2 = (Class)p.getActualTypeArguments()[1];
        System.out.println(c2);
    }
}

#################
打印结果:
class com.mycode.test.Person
com.mycode.test.Person<java.lang.Integer, java.lang.Boolean>
class java.lang.Integer
class java.lang.Boolean
复制代码

 

posted @   思凡念真  阅读(164)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示