java使用反射获取方法为什么会报这个异常
现在想取出特定的方法,但是现在出了点问题,有点不明白这是要获取方法的类publicclassStudent{publicStringgetNumber(Strings){...
现在想取出特定的方法,但是现在出了点问题,有点不明白
这是要获取方法的类
public class Student {
public String getNumber(String s) {这是要获取的方法
return "1234";
}
}
/**下面是想用反射获取getNumber方法**/
Student s = new Student();
Class c = s.getClass();
Class[] cs=new Class[1];
cs[0]=String.class;
Method m=c.getDeclaredMethod("getNumber",ca);
然后就报异常了
java.lang.IllegalArgumentException: wrong number of arguments
意思说的我参数不够,但是就有一个String类型的,已经放到数组里了,这是怎么回事 展开
这是要获取方法的类
public class Student {
public String getNumber(String s) {这是要获取的方法
return "1234";
}
}
/**下面是想用反射获取getNumber方法**/
Student s = new Student();
Class c = s.getClass();
Class[] cs=new Class[1];
cs[0]=String.class;
Method m=c.getDeclaredMethod("getNumber",ca);
然后就报异常了
java.lang.IllegalArgumentException: wrong number of arguments
意思说的我参数不够,但是就有一个String类型的,已经放到数组里了,这是怎么回事 展开
1个回答
展开全部
试一试下面的内容:
public class ReflectTest
{
/**
* @param args
*/
public static void main(String[] args) throws NoSuchMethodException,
SecurityException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException
{
/** 下面是想用反射获取getNumber方法 **/
Student s = new Student();
Class c = s.getClass();
// Class[] cs = new Class[1];
// cs[0] = String.class;
Method m = c.getDeclaredMethod("getNumber", String.class);
System.out.println(m.invoke(new Student(), "123"));
}
}
2.另外,一般这个反射获得方法的方式是针对私有方法的,而不是公有方法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |