黑马程序员技术交流社区

标题: 张孝祥老师——通过反射获得泛型的实际类型参数 [打印本页]

作者: 邵阳    时间: 2012-9-11 11:57
标题: 张孝祥老师——通过反射获得泛型的实际类型参数
        Method genericMethod=GenericTest.class.getMethod("applyVector",Vector.class);
                Type[] genericType=genericMethod.getGenericParameterTypes();
                ParameterizedType parameterType=(ParameterizedType)genericType[0];
                System.out.println(parameterType.getRawType());
                System.out.println((parameterType.getActualTypeArguments()[0]));
        }
        public static void applyVector(Vector<Date> v)
        {}
这个可以通过
结果是
class java.util.Vector
class java.util.Date

为什么public改成private,编译通过,但是运行失败啊
Exception in thread "main" java.lang.NoSuchMethodException: cn.itcast.day2.GenericTest.applyVector(java.util.Vector)
        at java.lang.Class.getMethod(Class.java:1605)
        at cn.itcast.day2.GenericTest.main(GenericTest.java:44)


我怀疑反射调用方法必须的都用public
作者: 梁志冰    时间: 2012-9-11 12:03
沙发,师兄,学习一下
作者: 霍永刚    时间: 2012-9-11 13:28
反省集合需要外部调用
作者: 王金科    时间: 2012-9-11 13:41
对于私有的方法, Method genericMethod=GenericTest.class.getMethod("applyVector",Vector.class);
必须改成getDeclaredMethod
作者: 张 涛    时间: 2012-9-11 13:51
对于私有的方法, Method genericMethod=GenericTest.class.getMethod("applyVector",Vector.class);
必须改成getDeclaredMethod
作者: 尤圣回    时间: 2012-9-11 17:57
对于私有的方法, Method genericMethod=GenericTest.class.getMethod("applyVector",Vector.class);
必须改成getDeclaredMethod
在加上genericMethod.access(true)就可以了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2