当前位置: 代码迷 >> Java相关 >> 43_通过反射取得泛型的实际类型参数
  详细解决方案

43_通过反射取得泛型的实际类型参数

热度:97   发布时间:2016-04-22 20:43:09.0
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){            }}
  相关解决方案