A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李深山 中级黑马   /  2012-3-17 23:44  /  2145 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static void applyVector(Vector<Date> v1){}
怎么通过反射把上面的泛型类型搞到?高手解决下,说说具体的步骤。

4 个回复

倒序浏览
你确定可以搞到吗 知道了告诉我
回复 使用道具 举报
泛型是提供给javac编译器看的,在指定以外的非法输入挡在程序编译之前,编译器编译带泛型的集合后会取掉泛型信息,也就是想通过程序运行得到泛型信息是不可能的,我的理解是这样。如果可以的话也求高人指点。
回复 使用道具 举报
以前没写过我也不知道可不可以。程序所有的方法都是在API上现找的。反正是发现了泛型的类型。
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
class  Test2
{
        public static void applyVector(Vector<Date> v1)
        {
        }
}

public class MethodTest
{
        public static void main(String[] args) throws Exception
        {
                Class<Test2> clazz = Test2.class;
                Method method = clazz.getMethod("applyVector",Vector.class);
                Type[] types = method.getGenericParameterTypes();
                if(types[0] instanceof ParameterizedType)
                {
                        ParameterizedType pType = (ParameterizedType)types[0];
                        Type[] rType = pType.getActualTypeArguments();
                        System.out.println("泛型是");
                        for(int i=0;i<rType.length;i++)
                        {
                                System.out.println( rType[i]);
                        }
                }
        }
}
回复 使用道具 举报
Method.getGenericParameterTypes()
  按照声明顺序返回 Type 对象的数组,这些对象描述了此 Method 对象所表示的方法的形参类型的。
给力 谢谢指教。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马