Java之如何获取泛型参数

 更新时间:2024年09月19日 10:34:42   作者:赚够壹仟万  
在Java开发中,获取泛型参数一般有两种方法:第一种是通过JDK自带的API,主要利用反射机制来获取类的泛型信息;第二种方法是借助Spring框架提供的GenericTypeResolver工具类,这种方式更加简便,这两种方法都能有效地帮助开发者在运行时获取到泛型参数

Java获取泛型参数

对于一个基本的类

public class BaseDao<T>{
    T findOne() {
        return T;
    }
}

它的子类

public class StudentDao extends BaseDao<StudentDao.Student>{

    public static class Student{
    }

}

如何获得当前类对应的泛型参数呢?

方法一 JDK

public static void main(String[] args) throws Exception {
    // 可以拿到带有泛型信息的父类
    Type genericSuperclass = StudentDao.class.getGenericSuperclass();
    // 这里要判断一手如果你的父类确实有泛型信息
    if (genericSuperclass instanceof ParameterizedType parameterizedType) {
        Type[] typeArguments = parameterizedType.getActualTypeArguments();
        System.out.println(typeArguments[0]);
    }
}

方法二 spring提供的方式

通过GenericTypeResolver获得.

public static void main(String[] args) throws Exception {
   Class<?> t = GenericTypeResolver.resolveTypeArgument(StudentDao.class, BaseDao.class);
   System.out.println(t);
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot详细分析自动装配原理并实现starter

    SpringBoot详细分析自动装配原理并实现starter

    相对于传统意义上的Spring项目,SpringBoot具有开箱即用,简化配置,内置Tomcat等等等等一系列的特点。在这些特点中,最重要的两条就是约定优于配置和自动装配
    2022-07-07
  • MyBatis Example And与Or混合使用的实例

    MyBatis Example And与Or混合使用的实例

    这篇文章主要介绍了MyBatis Example And与Or混合使用的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 一个合格JAVA软件工程师应该具备什么

    一个合格JAVA软件工程师应该具备什么

    一个合格JAVA软件工程师应该具备哪些专业技能,面试技巧是什么?本文为大家分享了2016版最新Java软件工程师就业思维图,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 关于kafka消费不到远程bootstrap-server 数据的问题

    关于kafka消费不到远程bootstrap-server 数据的问题

    很多朋友遇到kafka消费不到远程bootstrap-server 数据的问题,怎么解决这个问题,很多朋友不知所措,下面小编给大家带来了关于kafka消费不到远程bootstrap-server 数据的问题及解决方法,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • Java基于MySQL实现学生管理系统

    Java基于MySQL实现学生管理系统

    这篇文章主要为大家详细介绍了Java基于MySQL实现学生管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • java异常中throw和throws的区别及说明

    java异常中throw和throws的区别及说明

    这篇文章主要介绍了java异常中throw和throws的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • SpringBoot导出PDF的四种实现方法详解

    SpringBoot导出PDF的四种实现方法详解

    在Spring Boot应用程序中实现PDF导出功能,可以选择多种库和技术栈,本文为大家整理了四种常见的方法,感兴趣的小伙伴可以参考一下
    2025-02-02
  • Java报错:Java.io.FileNotFoundException解决方法

    Java报错:Java.io.FileNotFoundException解决方法

    这篇文章主要介绍了Java.io.FileNotFoundException的产生原因和解决方法,造成这个报错的原因可能有文件路径错误、文件被删除或移动和权限问题,文中将解决的办法介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • 如何在Redis中实现分页排序查询过程解析

    如何在Redis中实现分页排序查询过程解析

    这篇文章主要介绍了如何在Redis中实现分页排序查询过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • SpringBoot定制JSON响应数据返回的示例代码

    SpringBoot定制JSON响应数据返回的示例代码

    @JsonView 是 Jackson 库中的一个注解,它允许你定义哪些属性应该被序列化到 JSON 中,基于不同的“视图”或“配置”,在本文中,通过了解@JsonView,你将能够更好地掌握如何在Spring Boot应用中定制JSON数据的输出,需要的朋友可以参考下
    2024-05-05

最新评论