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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 回首、后_街 于 2013-4-23 08:59 编辑

  
Class<?> clazz =Class.forName("Cat");
  Method method = clazz.getMethod("show");
  Constructor<?> con = clazz.getConstructor(String.class,int.class);
  Object obj = con.newInstance("张三",21);
  method.invoke(obj);

当运行这代码出现异常
Exception in thread "main" java.lang.NoSuchMethodException: Cat.show()
at java.lang.Class.getMethod(Unknown Source)
at Test.main(Test.java:13)
异常讲无法找到某一特定方法但是我在Cat类中有Show()方法
方法中的参数是show(String name ,int age)

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

7 个回复

倒序浏览
public Method getDeclaredMethod(String name,
                                Class<?>... parameterTypes)
                         throws NoSuchMethodException,
                                SecurityException
回复 使用道具 举报
itheima01 发表于 2013-4-22 22:01
public Method getDeclaredMethod(String name,
                                Class... parameterTypes ...

大神这代码不是很懂怎么解决呢?能讲明白点吗?谢谢了
回复 使用道具 举报
本帖最后由 HM张健 于 2013-4-22 22:46 编辑

额 最好贴个源码  不过我觉得应该是这里出问题了 Method method = clazz.getMethod("show");  改成这样Method method = clazz.getMethod("show",String.class,int.class);  
你的方法是有参数的  上面那位想说的估计就是这个 我猜你是不是要写成这样
  1. package test;

  2. import java.lang.reflect.*;

  3. public class ReflectionTest {
  4.        
  5.         private String name;
  6.         private int age;

  7.         public ReflectionTest() {
  8.                 // TODO Auto-generated constructor stub
  9.         }
  10.         public void show(String name,int age){
  11.                
  12.                 this.name = name;
  13.                 this.age = age;
  14.                 System.out.println(name);
  15.                 System.out.println(age);
  16.         }

  17.         public static void main(String[] args) throws Exception{
  18.                 // TODO Auto-generated method stub
  19.                 new ReflectionTest().show("张三",20);
  20.                 Class cl = ReflectionTest.class;
  21.                 Method m = cl.getMethod("show",String.class,int.class);
  22.                 Object obj = cl.newInstance();
  23.                 m.invoke(obj, "李四",30);

  24.         }

  25. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
HM张健 发表于 2013-4-22 22:43
额 最好贴个源码  不过我觉得应该是这里出问题了 Method method = clazz.getMethod("show");  改成这样Meth ...

这是Cat类中的代码 Cat类继承Animal类 Animal是抽象类 show()方法是Animal类中的抽象方法
public class Cat extends Animal{
       
          public String show(String name,int age){
                  String str= "run..."+name+"age..."+age;
                  System.out.println(str);
                  return str;
          }
}

我使用了你的方法还是爆出刚刚那个异常
回复 使用道具 举报
回首、后_街 发表于 2013-4-22 22:53
这是Cat类中的代码 Cat类继承Animal类 Animal是抽象类 show()方法是Animal类中的抽象方法
public class  ...

额  你把代码都贴出来看下呗  不看完整的么晓得哪里有问题撒
回复 使用道具 举报
稍后云版块会推出学习过程中问题以及对知识点的领悟收集!会有技术分奖励,敬请期待、多多参与,要注意按照进度收集问题,那样你会事半功倍。
问题解决的话请及时结贴
回复 使用道具 举报
HM张健 发表于 2013-4-22 22:59
额  你把代码都贴出来看下呗  不看完整的么晓得哪里有问题撒

谢谢了 问题解决了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马