使用反射执行方法时,遇到java.lang.NoSuchMethodException的解决方法

异常如下

Exception in thread "main" java.lang.NoSuchMethodException: com.dyq.homework.Student.setName()
	at java.lang.Class.getMethod(Class.java:1786)
	at com.dyq.homework.TestHomeWork.main(TestHomeWork.java:69)

Student类(写了主要部分)

    public void setName(String name) {
        this.name = name;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

程序代码:(只写了主要出错的部分)

	Class clazz = Class.forName(clazzName);//clazzName为该类的地址
	//无参构造
    Object stu2 = clazz.newInstance();
    Method setName = clazz.getMethod("setName");//出错地方,没有写形参类型
    //应改为Method setName = clazz.getMethod("setName",String.class);
    setName.invoke(stu2, stuName);
    Method setAge = clazz.getMethod("setAge");//出错地方,没有写形参类型
    //应改为Method setAge = clazz.getMethod("setAge",Integer.class);
    setAge.invoke(stu2,Integer.parseInt(stuAge));
    Method setSex = clazz.getMethod("setSex");//出错地方,没有写形参类型
    //应改为 Method setSex = clazz.getMethod("setSex",String.class);
    setSex.invoke(stu2,stuSex);

错误分析

	Class.getMethod(String str, Class<?>... parameterTypes):
	该方法的第一个参数是要获得方法的名字,第二个参数是按声明顺序标识该方法形参类型
	由于我没有写后面的形参类型导致找不到方法,所以出错

版权声明:本文为Dyqqqi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。