黑马程序员技术交流社区
标题:
反射中getMethod问题
[打印本页]
作者:
罗家辉
时间:
2013-4-14 23:54
标题:
反射中getMethod问题
本帖最后由 罗家辉 于 2013-4-15 16:25 编辑
class Person{
private String name;
private int age;
Person(String name,int age){
this.setAge(age);
this.setName(name);
}
public String toString(){
return "姓名:"+name+",年纪:"+age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
复制代码
public static void main(String[] args) throws Throwable{
Class<Person> c = Person.class;
Method m = c.getMethod("getName");
System.out.println(m);
}
复制代码
{:soso_e116:}通过他c.getMethod("getName");可以获取getName的方法,但是当Person类中的方法有参数,他就获取不了,报异常: java.lang.NoSuchMethodException
c.getMethod("setName")编译没有错,运行时就出异常,为什么会这样?
作者:
王洪宇
时间:
2013-4-14 23:58
public static void main(String[] args) throws Throwable{
Class<Person> c = Person.class;
//需要把参数类型也要列出来,setName(String name)
Method m = c.getMethod("getName",String.class);//
System.out.println(m);
}
复制代码
作者:
Asan
时间:
2013-4-15 00:10
你的初始值呢,你的main方法中没有设那么的初始值!
作者:
吴林飞
时间:
2013-4-15 10:36
本帖最后由 吴林飞 于 2013-4-15 10:41 编辑
Class<Person> c = Person.class;
Method setName = c.getMethod("setName",String.class);
//你的JavaBean中的setName(String name)方法是不是带参数的,编译期只检查语法,运行期才参与运算,
//你要反射带参数的方法,你必须带上参数反射,否则JVM识别不了
System.out.println(setName);
Method getName = c.getMethod("getName");
//你的JavaBean中的getName()是不是空参数的,
System.out.println(getName);
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2