码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-07-27 10:48:13      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:imp   spring   param   rgs   接口实现   ack   void   e30   操作   

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

(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

 

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

标签:imp   spring   param   rgs   接口实现   ack   void   e30   操作   

原文地址:http://www.cnblogs.com/shangxiaofei/p/7243186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!