zoukankan      html  css  js  c++  java
  • 43_通过反射获得泛型的实际类型参数

    框架经常干的事,

    根据方法签名得知数据的类型,然后转换成相应的对象,填充进去。

     

    package com.itcast.day2;
    
    import java.lang.reflect.Method;
    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Date;
    import java.util.Vector;
    
    import com.itcast.day1.ReflectPoint;
    
    public class GenericExc {
    
        public static void main(String[] args) throws Exception{
            Method applyMethod=GenericExc.class.getMethod("applyVector", Vector.class);
            //Type 是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
            Type[] types=applyMethod.getGenericParameterTypes();
            
            ParameterizedType pType= (ParameterizedType)types[0];//ParameterizedType是Type的子接口
            System.out.println(pType.getRawType());//得到原始类型
            System.out.println(pType.getActualTypeArguments()[0]);//得到实际类型
                    
            //applyVector(Vector v)时, java.lang.Class 
            //applyVector(Vector<Date> v) sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
            System.out.println(types[0].getClass());
            
            //jdk1.8以后有了简便的方法直接得到了 java.util.Vector<java.util.Date>
            System.out.println(types[0].getTypeName());
        }
    
        public  void applyVector(Vector<Date> v){
            
        }
    
    }
  • 相关阅读:
    html——黑体、斜体、下划线及删除线
    <转>DataGridView分页控件
    (转)Log4J 最佳实践之全能配置文件
    C# 单例代码
    MySql基本语句
    .NET中windows服务如何获取自己的安装路径
    web开发网址收藏...
    将字符串转换为json对象_正确语法
    (转)理解矩阵一、二、三
    将数据写入EXCEL多个表
  • 原文地址:https://www.cnblogs.com/qq-757617012/p/4271840.html
Copyright © 2011-2022 走看看