Java中的反射(2,操作方法)

2 篇文章 0 订阅

前情回顾:java中用反射创建类对象,操作属性

反射操作方法

1.获取方法:
*             getMethods()             // 获取所有的公共方法包括父类
*             getDeclaredMethods()      // 获取所有声明的方法不包括父类
*            getMethod(String name,Class...cla)   // 获取指定的公共方法
 String name ———————— 表示方法名
 Class...cla ————————表示方法接收的参数类型的**类对象**
*        getDeclaredMethod(String name,Class...cla)     //获取指定的声明方法
 String name    ————————        表示方法名
 Class...cla     ————————    表示方法接收的参数类型的类对象
2.操作方法
*     静态方法:  方法对象.invoke(null,参数值1,参数值2,....);//参数类型
*                方法对象.invoke(null,null);
*     非静态方法:Object obj=cla.newInstance();
         方法对象.invoke(obj,参数值1,参数值2,....)
          方法对象.invoke(obj,null)

2.代码:

  //操作方法
       private static void operMethod() throws ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
               //获取类对象
               Class cla=Class.forName("com.bjsxt.pojo.Student");
               //获取类方法对象
                       //获取所有的公共方法包括父类
                       Method[] ms=cla.getMethods();
                       for(Method m:ms){
                               System.out.println("获取方法名--->"+m.getName());
                       }
                       System.out.println("************************************");
                       //获取所有声明的方法不包括父类
                       Method[] ms2=cla.getDeclaredMethods();
                       for(Method m:ms2){
                               System.out.println("获取方法名--->"+m.getName());
                       }
                       //获取指定的公共方法包括父类
                               Method m=cla.getMethod("pHi", int.class,String.class);
                               System.out.println(m.getReturnType());
                       //获取指定的声明的方法,不包括父类
                               Method m2=cla.getDeclaredMethod("sHello",null);
                               System.out.println(m2.getName());
                       //执行方法
                               //静态方法
                                       Method m3=cla.getDeclaredMethod("sHi",String.class);
                  m3.invoke(null, "String参数");
                               //非静态
                                       Method m4=cla.getDeclaredMethod("sHi",int.class,String.class);
                                       m4.invoke(cla.newInstance(), 3,"String参数");
       }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值