zoukankan      html  css  js  c++  java
  • 【java反射】Class类型的相关操作演练

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

    (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
  • 相关阅读:
    iis 500
    无线密码获取
    数据库创建
    系统基础配置指令
    手把手教你用ngrx管理Angular状态
    vue中v-cloak解决刷新或者加载出现闪烁(显示变量)
    HBuilder如何与真机连接
    01 spring boot源码阅读参考
    01 git学习笔记参考
    OAuth2授权基础知识
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/7243186.html
Copyright © 2011-2022 走看看