【java反射】Class类型的相关操作演练
2024-08-28 11:58:46
【一】获取范型接口的实现类的范型类型
(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); }
(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) { } }
(3)范型接口实现类的范型的填充类
package com.mobile.thinks.login.event; import org.springframework.context.ApplicationEvent; public abstract class BaseEvent extends ApplicationEvent { public BaseEvent(Object source) {
super(source);
} }
(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);
}
}
}
}
最新文章
- Spark使用实例
- 一次Redis的使用Bug记录(exec)
- JavaScript Patterns 6.2 Expected Outcome When Using Classical Inheritance
- linux驱动初探之字符驱动
- Xenia and Bit Operations(线段树单点更新)
- ext在web工程目录导致myeclipse内存溢出问题
- Android --Activity与Fragment通讯
- 用类求圆面积c++
- Matlab命令eig
- Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)
- 动态插入图片到 svg 中
- 依赖注入及AOP简述(十三)——AOP应用举例(完结) .
- 介绍linux下Source Insight强大代码编辑器sublime_text_3
- python批量处理
- C#版(击败100.00%的提交) - Leetcode 744. 寻找比目标字母大的最小字母 - 题解
- Mac连接非22端口linux服务器
- 比MR至少快5倍的神器,竟然是它
- kattis Programming Tutors 给游客与导游匹配(二分+二分图)
- InnoDB 与 MYISAM的区别和联系
- SimpleDateFormat 出现错误 Call requires API level 24 (current min is 15)