• 【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
  • 相关阅读:
    [在Windows上使用Unix工具]MKS
    [MySQL]导入导出
    《Excel与VBA程序设计》写作计划
    由Google Map API想开去
    《Excel与VBA程序设计》第七章
    转载:东拉西扯:产业链
    Google ToolBar 3.0 Beta试用
    UI和界面可用性设计
    《Excel与VBA程序设计》第一章
    关于通过COM自动化调用Excel的效率问题
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/7243186.html
Copyright © 2020-2023  润新知