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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘勇强 中级黑马   /  2013-6-3 16:10  /  1626 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘勇强 于 2013-6-3 16:58 编辑
  1. class person
  2. {   
  3.      void speak()
  4.      {
  5.              System.out.println("hello,world");
  6.      }
  7.                
  8.    
  9. }
复制代码
如果用Person.class.getMethod("speak");这种格式调用上面的类中的成员方法,
这里哪里有问题呢?括号里面的参数该怎么用?



4 个回复

倒序浏览
getMethod(String name, Class<?>... parameterTypes)
parameterTypes 参数是按声明顺序标识该方法形参类型的 Class 对象的一个数组
后面代表参数类型
请查看API
回复 使用道具 举报
基本上没有问题,但是还没有写全
  1. import java.lang.reflect.Constructor;
  2. import java.lang.reflect.Field;
  3. import java.lang.reflect.InvocationTargetException;
  4. import java.lang.reflect.Method;
  5. import java.util.Vector;

  6. public class Demo {

  7.         /**
  8.          * @param args
  9.          * @throws SecurityException
  10.          * @throws NoSuchMethodException
  11.          * @throws InstantiationException
  12.          * @throws InvocationTargetException
  13.          * @throws IllegalArgumentException
  14.          * @throws IllegalAccessException
  15.          */
  16.         public static void main(String[] args) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
  17.                 // TODO Auto-generated method stub

  18.                 Class clazz = Person.class;
  19.                 Field[] fld = clazz.getFields();
  20.                        
  21.                 Method m = clazz.getMethod("speak", null);
  22.                
  23.                 m.invoke(clazz.newInstance(), null);               
  24.         }

  25. }

  26. class Person{
  27.         Person(){
  28.                 System.out.println("p");
  29.         }
  30.        
  31.         public void speak(){
  32.                 System.out.println("speak");
  33.         }
  34. }
复制代码
回复 使用道具 举报
楼上的写的不错   很符合标准
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马