黑马程序员技术交流社区

标题: 方法未定义异常,不解?明明定义了... [打印本页]

作者: 金肖    时间: 2012-5-16 18:08
标题: 方法未定义异常,不解?明明定义了...
  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. }
复制代码

作者: 云惟桉    时间: 2012-5-16 22:19
楼主的applyVector函数定义成private权限的了,
Method applyMethod = ReflactCollection.class.getMethod("applyVector", Vector.class);  
通过以上语句,能获取到的只是声明为public的公共成员方法,
所以在对应类中找不到声明为public的applyVector方法,就报了异常。

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

希望能帮到你啊。




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