【java反射】Class类型的相关操作演练

简介: 【一】获取范型接口的实现类的范型类型(1)范型接口package org.springframework.context;import java.util.EventListener;public interface ApplicationListener extends Even...

【一】获取范型接口的实现类的范型类型

(1)范型接口

package org.springframework.context;

import java.util.EventListener;


public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {

    /**
     * Handle an application event.
     * @param event the event to respond to
     */
    void onApplicationEvent(E event);

}
View Code

(2)范型接口实现类

package com.mobile.thinks.login.listen;

import org.springframework.context.ApplicationListener;

import com.mobile.thinks.login.event.BaseEvent;

public class LoginListen implements ApplicationListener<BaseEvent>{

    @Override
    public void onApplicationEvent(BaseEvent event) {
    
        
    }

    
}
View Code

(3)范型接口实现类的范型的填充类

package com.mobile.thinks.login.event;

import org.springframework.context.ApplicationEvent;

public abstract class BaseEvent extends ApplicationEvent {

    public BaseEvent(Object source) {
        super(source);
    }

    
}
View Code

(4)获取范型的填充类的类型

    public static void main(String[] args) {
        LoginListen listen=new LoginListen();
        Class<?> cls =listen.getClass();
        //cls==>class com.mobile.thinks.login.listen.LoginListen
        System.out.println("cls==>"+cls);
        Type[] type=cls.getGenericInterfaces();
        Type types=cls.getGenericSuperclass();
        for(int i=0;i<type.length;i++){
            Type ty=type[i];
            if(ty instanceof ParameterizedType){
                Type[] sTypes=((ParameterizedType)ty).getActualTypeArguments();
                for(int j=0;j<sTypes.length;j++){
                    Type clsa=sTypes[j];
                    //范型类型==>class com.mobile.thinks.login.event.BaseEvent
                    System.out.println("范型类型==>"+(Class)clsa);
                }
            }
        }
    }
View Code

 

相关文章
|
6天前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
11天前
|
存储 Java 程序员
Java中对象几种类型的内存分配(JVM对象储存机制)
Java中对象几种类型的内存分配(JVM对象储存机制)
45 5
Java中对象几种类型的内存分配(JVM对象储存机制)
|
1天前
|
Java 测试技术 Docker
记录一次很坑的报错:java.lang.Exception: The class is not public.
这篇文章记录了作者在Docker中运行服务进行单元测试时遇到的一系列问题,包括Spring Boot与Spring Cloud版本不一致、Bean注入问题、测试单元引入问题以及公共类和方法的可见性问题,并提供了解决问题的方法和成功测试通过的代码示例。
记录一次很坑的报错:java.lang.Exception: The class is not public.
|
6天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
12天前
|
Java
JAVA中public class和class的区别
JAVA中public class和class的区别
26 7
|
11天前
|
Java 数据安全/隐私保护
03 Java流程控制-分支(if+switch+变量类型)
03 Java流程控制-分支(if+switch+变量类型)
17 5
|
21天前
|
存储 Java 索引
Java ArrayList操作指南:如何移除并返回第一个元素
通过上述方法,你可以方便地从Java的 `ArrayList` 中移除并返回第一个元素。这种操作在日常编程中非常常见,是处理列表时的基本技能之一。希望这篇指南能帮助你更好地理解和运用Java的 `ArrayList`。
24 4
|
1天前
|
Java
成功解决:java: 找不到符号 符号: 方法 getSort() 位置: 类型为com.atguigu.gulimall.product.entity.CategoryEntity的变量 menu1
这篇文章讨论了Java中遇到的一个常见错误:"java: 找不到符号 符号: 方法 getSort() 位置: 类型为com.atguigu.gulimall.product.entity.CategoryEntity的变量 menu1",即在尝试调用一个不存在的方法时出现的问题,并提供了相应的解决方法。
|
5天前
|
Java API
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
|
5天前
|
Oracle Java 关系型数据库
简单记录在Linux上安装JDK环境的步骤,以及解决运行Java程序时出现Error Could not find or load main class XXX问题
本文记录了在Linux系统上安装JDK环境的步骤,并提供了解决运行Java程序时出现的"Error Could not find or load main class XXX"问题的方案,主要是通过重新配置和刷新JDK环境变量来解决。
17 0