java使用反射获取方法为什么会报这个异常

小肚子A 发布于 2014/11/01 18:25
阅读 209
收藏 0

现在想取出特定的方法,但是现在出了点问题,有点不明白

这是要获取方法的类

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类型的,已经放到数组里了,这是怎么回事



加载中
0
plugin
plugin
public class Test5 {
	
	public String getNumber(String s,Integer i){
		return "1234" + i;
	}
	
	public static void main(String[] args) throws Exception{
		//Method m = Test5.class.getMethod("getNumber", new Class[]{String.class, Integer.class});
		Method m = Test5.class.getMethod("getNumber", String.class, Integer.class);
		System.out.println(m.invoke(Test5.class.newInstance(), new Object[]{"dong",12}));
	}
}

一个参数:

public class Test5 {
	
	public String getNumber(String s){
		return "1234";
	}
	
	public static void main(String[] args) throws Exception{
		
		Method m = Test5.class.getMethod("getNumber", new Class[]{String.class});
		System.out.println(m.invoke(Test5.class.newInstance(), new Object[]{"dong"}));
	}
}




plugin
plugin
你传实参的时候多了可能
0
xoHome
xoHome

Method m=c.getDeclaredMethod("getNumber",ca);

修改为 Method m=c.getDeclaredMethod("getNumber",new Class[]{ca});

返回顶部
顶部