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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 金肖 中级黑马   /  2012-5-16 18:08  /  1350 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.lang.reflect.Method;
  2. import java.lang.reflect.ParameterizedType;
  3. import java.util.Date;
  4. import java.util.Vector;

  5. public class ReflactCollection {
  6. public static void main(String[] args) throws Exception {

  7. //获取该方法
  8. Method applyMethod = ReflactCollection.class.getMethod("applyVector", Vector.class);  //通过反射获取applyVecto,明明在下面定义了,为什么会还报 方法未定义异常

  9. //同过该方法获取该方法中接收的参数列表
  10. java.lang.reflect.Type[] type = applyMethod.getGenericParameterTypes();

  11. //获取该参数列表的参数类型
  12. ParameterizedType ptt = (ParameterizedType) type[0]; //强制转换成参数类型

  13. System.out.println(ptt.getRawType());
  14. System.out.println(ptt.getActualTypeArguments()); //获取实际参数类型
  15. }

  16. private static void applyVector(Vector<Date> v1) {

  17. }
  18. }
复制代码

1 个回复

倒序浏览
楼主的applyVector函数定义成private权限的了,
Method applyMethod = ReflactCollection.class.getMethod("applyVector", Vector.class);  
通过以上语句,能获取到的只是声明为public的公共成员方法,
所以在对应类中找不到声明为public的applyVector方法,就报了异常。

如果需要获取获取private方法,使用Class类中的getDeclaredMethod可以实现。
或者暴力的把该方法设置成可见的,通过该方法的Method类中的setAccessible(true)实现,该方法是从AccessibleObject类中继承来的。

希望能帮到你啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马