黑马程序员技术交流社区
标题:
方法未定义异常,不解?明明定义了...
[打印本页]
作者:
金肖
时间:
2012-5-16 18:08
标题:
方法未定义异常,不解?明明定义了...
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.util.Date;
import java.util.Vector;
public class ReflactCollection {
public static void main(String[] args) throws Exception {
//获取该方法
Method applyMethod = ReflactCollection.class.getMethod("applyVector", Vector.class); //通过反射获取applyVecto,明明在下面定义了,为什么会还报 方法未定义异常
//同过该方法获取该方法中接收的参数列表
java.lang.reflect.Type[] type = applyMethod.getGenericParameterTypes();
//获取该参数列表的参数类型
ParameterizedType ptt = (ParameterizedType) type[0]; //强制转换成参数类型
System.out.println(ptt.getRawType());
System.out.println(ptt.getActualTypeArguments()); //获取实际参数类型
}
private static void applyVector(Vector<Date> v1) {
}
}
复制代码
作者:
云惟桉
时间:
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