zoukankan      html  css  js  c++  java
  • 通过反射来获取泛型的参数以及返回值(不是很懂)

    反射获取泛型有下面的方法
    1.从方法中获取泛型参数列表
    Type[] genericParameterTypes = method.getGenericParameterTypes ();
    2.

    import java.lang.reflect.Method;
    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    import java.util.List;
    import java.util.Map;
    public class Test08 {
        public void test01(Map<String,User> map, List<User> list){
            System.out.println ("test01");
        }
        public Map<String,User> test02(){
            System.out.println ("test02");
            return null;
        }
        public static void main(String[] args) throws NoSuchMethodException {
            //首先获取test01方法
            Method method = Test08.class.getMethod ("test01",Map.class,List.class);
            //将方法的泛型参数类型存储在Type类型数组,type类型可以存储所有的java类型
            Type[] genericParameterTypes = method.getGenericParameterTypes ();
            for (Type genericParameterType : genericParameterTypes) {
                //获取泛型及其中参数
                System.out.println ("##"+genericParameterType);
                //
                if(genericParameterType instanceof ParameterizedType){
                    Type[] actuallyTypeArguments = ((ParameterizedType)genericParameterType).getActualTypeArguments();
                    for (Type actuallyTypeArgument : actuallyTypeArguments) {
                        System.out.println (actuallyTypeArgument);
                    }
                }
            }
            System.out.println ("--------------------------------");
            method = Test08.class.getMethod ("test02",null);
            Type genericReturnType = method.getGenericReturnType ();
            if(genericReturnType instanceof ParameterizedType){
                Type[] actuallyTypeArguments = ((ParameterizedType)genericReturnType).getActualTypeArguments();
                for (Type actuallyTypeArgument : actuallyTypeArguments) {
                    System.out.println (actuallyTypeArgument);
                }
            }
    
        }
    }
    结果:
    ##java.util.Map<java.lang.String, Reflection.User>
    class java.lang.String
    class Reflection.User
    ##java.util.List<Reflection.User>
    class Reflection.User
    --------------------------------
    class java.lang.String
    class Reflection.User
    
  • 相关阅读:
    流水线操作verilog
    16x16移位相加乘法器verilog实现
    Nios II对flash进行读写(DE2)
    initial使用的要点
    边沿检测电路设计verilog
    DDoS攻防战 (四):CC攻击防御系统部署
    DDoS攻防战(三):ip黑白名单防火墙frdev的原理与实现
    DDoS攻防战 (二) :CC攻击工具实现与防御理论
    DDoS攻防战 (一) : 概述
    IP流量重放与pcap文件格式解析
  • 原文地址:https://www.cnblogs.com/li33/p/12742299.html
Copyright © 2011-2022 走看看