获取泛型的类型

news/2024/5/19 6:03:34 标签: java, 反射, 泛型, 获取泛型类型

示例一:获取父类的泛型的类型

java">public class Emp<T, Q> {
    class Stu extends Emp<String, Integer> {
    }

    @Test
    void fun() {
        final Type type = Emp.class.getGenericSuperclass();
        final ParameterizedType parameterizedType = (ParameterizedType) type;
        System.out.println(parameterizedType.getActualTypeArguments()[0]);
        System.out.println(parameterizedType.getActualTypeArguments()[1]);
    }
}

示例二:获取成员变量的泛型类型

java">public class Emp<T, Q> {
    private static Emp<String, Integer> emp = new Emp<>();
    public static void main(String[] args) throws Exception {
        //通过反射获取student属性
        Field field = Emp.class.getDeclaredField("emp");
        //通过属性获取泛型
        Type genericType = field.getGenericType();
        System.out.println(genericType);

        // ParameterizedType表示的是带泛型的类型
        ParameterizedType pt = (ParameterizedType) genericType;
        // 获取具体的泛型类型,这个方法会返回一个Type的数组
        Type[] actualTypeArguments = pt.getActualTypeArguments();
        System.out.println(actualTypeArguments[0]);
        System.out.println(actualTypeArguments[1]);
    }
}

示例三:获取局部变量的泛型的类型

java">public class Emp<T, Q> {
    public static void main(String[] args) throws Exception {
        //注意:泛型对象必须以匿名内部类的方式定义
Emp<String, Integer> emp = new Emp<>() { //匿名内部类
        };
        final Type type = emp.getClass().getGenericSuperclass();

        ParameterizedType parameterizedType = (ParameterizedType) type;
        final Type[] types = parameterizedType.getActualTypeArguments();
        System.out.println(types[0]);
        System.out.println(types[1]);
    }
}

http://www.niftyadmin.cn/n/5072244.html

相关文章

【ESP32 + Edge Impulse平台】模拟多传感器数据融合实验测试

本文章主要记录利用 【ESP32 + Edge Impulse平台】完成数据集的采集、训练、测试、模型部署和运行,实现多传感器数据的融合 目录 1. 实验描述1.1【场景1固件】1.2【场景2固件】2.数据集采集2.1 数据集12.1 数据集23.数据集训练3.1 生成数据特征3.2 选用分类器训练数据集3.3 模…

Windows 10 也能安装Kafka?这篇教程让你轻松掌握!

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是尘缘&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f449;点击这里&#xff0c;就可以查看我的主页啦&#xff01;&#x1f447;&#x…

【开发篇】二十、SpringBoot整合RocketMQ

文章目录 1、整合2、消息的生产3、消费4、发送异步消息5、补充&#xff1a;安装RocketMQ 1、整合 首先导入起步依赖&#xff0c;RocketMQ的starter不是Spring维护的&#xff0c;这一点从starter的命名可以看出来&#xff08;不是spring-boot-starter-xxx&#xff0c;而是xxx-s…

Git版本管理工具:简介、基本概念及使用指南

目录 一、前言 二、Git版本管理工具概述 Git的优势和适用场景 三、Git基本概念 1. 仓库&#xff08;Repository&#xff09; 2. 分支&#xff08;Branch&#xff09; 3. 提交&#xff08;Commit&#xff09; 4. 合并&#xff08;Merge&#xff09;与冲突解决&#xff0…

第二节:vuex与wabpack基本配置

vuex 1.&#xff1a;vuex官网 2.进行安装vuex npm install vuexnext --save或者yarn add vuexnext --save 3.配置store 新建store文件夹以及store里边的index.js import { createStore } from vuex// 创建一个新的 store 实例 const store createStore({state () {return {c…

分类预测 | MATLAB实现KOA-CNN开普勒算法优化卷积神经网络数据分类预测

分类预测 | MATLAB实现KOA-CNN开普勒算法优化卷积神经网络数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN开普勒算法优化卷积神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN开普勒算法优化卷积神经网络数据分类预测&#xff0…

【JavaEE】线程安全的集合类

文章目录 前言多线程环境使用 ArrayList多线程环境使用队列多线程环境使用哈希表1. HashTable2. ConcurrentHashMap 前言 前面我们学习了很多的Java集合类&#xff0c;像什么ArrayList、Queue、HashTable、HashMap等等一些常用的集合类&#xff0c;之前使用这些都是在单线程中…

C++设计模式(1)-- 单例模式

基本概念 在一个项目中&#xff0c;全局范围内&#xff0c;某个类的实例有且仅有一个&#xff0c;通过这个唯一实例向其他模块提供数据的全局访问&#xff0c;这种模式就叫单例模式&#xff0c;单例模式的典型应用就是任务队列 涉及一个类多对象操作的函数有以下几个&#xff…