A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗家辉 中级黑马   /  2013-4-14 23:54  /  1589 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗家辉 于 2013-4-15 16:25 编辑
  1. class Person{
  2.         private String name;
  3.         private int age;
  4.         Person(String name,int age){
  5.                 this.setAge(age);
  6.                 this.setName(name);
  7.         }
  8.         public String toString(){
  9.                 return "姓名:"+name+",年纪:"+age;
  10.         }
  11.         public int getAge() {
  12.                 return age;
  13.         }
  14.         public void setAge(int age) {
  15.                 this.age = age;
  16.         }
  17.         public String getName() {
  18.                 return name;
  19.         }
  20.         public void setName(String name) {
  21.                 this.name = name;
  22.         }
  23. }
复制代码
  1. public static void main(String[] args) throws Throwable{
  2.   
  3.          Class<Person> c = Person.class;
  4.                 Method m = c.getMethod("getName");
  5.                 System.out.println(m);
  6.         }
复制代码
{:soso_e116:}通过他c.getMethod("getName");可以获取getName的方法,但是当Person类中的方法有参数,他就获取不了,报异常: java.lang.NoSuchMethodException
c.getMethod("setName")编译没有错,运行时就出异常,为什么会这样?

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

3 个回复

倒序浏览
  1. public static void main(String[] args) throws Throwable{
  2.   
  3.         Class<Person> c = Person.class;
  4. //需要把参数类型也要列出来,setName(String name)
  5.                 Method m = c.getMethod("getName",String.class);//               
  6.                  System.out.println(m);
  7.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
你的初始值呢,你的main方法中没有设那么的初始值!
回复 使用道具 举报
本帖最后由 吴林飞 于 2013-4-15 10:41 编辑
  1. Class<Person> c = Person.class;
  2. Method setName = c.getMethod("setName",String.class);
  3. //你的JavaBean中的setName(String name)方法是不是带参数的,编译期只检查语法,运行期才参与运算,
  4. //你要反射带参数的方法,你必须带上参数反射,否则JVM识别不了
  5. System.out.println(setName);
  6. Method getName = c.getMethod("getName");
  7. //你的JavaBean中的getName()是不是空参数的,
  8. System.out.println(getName);
复制代码

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马