每个Method的对象对应一个具体的底层方法。获得Method对象后,程序可以使用Method里面的invoke方法来执行该底层方法。

Object invoke(Object obj,Object ... args):obj表示调用底层方法的对象,后面的args表示传递的实际参数。

如果底层方法是静态的,那么可以忽略指定的 obj 参数。该参数可以为 null,想想为什么?

如果底层方法所需的形参个数为 0,则所提供的 args 数组长度可以为 0 或 null。

不写,null,或 new Object[]{}

若底层方法返回的是数组类型,invoke方法返回的不是底层方法的值,而是底层方法的返回类型;

package junereflect624;

import java.lang.reflect.Method;

class Dept{

public String show(String name){//用反射的方法来调用正常的方法

return name+",您好!";

}

private void privateshow(){//用反射来实现对私有化方法的调用

System.out.println("privateshow");

}

public static void staticshow(){

System.out.println("staticshow");

}

}

public class InvokeDemo9 {

public static void main(String[] args) throws Exception {

/*  传统方式:

String name = new Dept().show("刘昭");

System.out.println(name);*/

/**

         * Method getMethod(String name, Class<?>... parameterTypes)

                返回一个 Method 对象,它反映此 Class 对象所表示的类或接口的指          定公共成员方法。

            name -方法名

            parameterTypes -参数列表

         */

//想要通过反射来调用Dept中的方法

Class<Dept> c = Dept.class;

Method m = c.getMethod("show", String.class);

Object o = m.invoke(c.newInstance(), "刘昭");

System.out.println(o);

//私有化的方法

m = c.getDeclaredMethod("privateshow");//无参方法

m.setAccessible(true);

o = m.invoke(c.newInstance());

//静态方法的调用

m = c.getMethod("staticshow");

m.invoke(null);//staticshow为静态方法,不需创建对象,所以这里会是null

}

}

打印

刘昭,您好!

privateshow

staticshow

最新文章

  1. Error:No suitable device found: no device found for connection &quot;System eth0&quot;
  2. SQLAlchemy模型使用
  3. 2种方式解决nginx负载下的Web API站点里swagger无法使用
  4. java(搜索不区分大小写)
  5. h.Connector的SSL属性实现
  6. Java读取Excel文件的几种方法
  7. 实现GridView翻页并且实现CheckBox选中功能的保持
  8. Flesch Reading Ease (poj 3371)
  9. SQL PROMPT 取消dbo前缀
  10. FileCopy
  11. Squares&lt;哈希&gt;
  12. [IOI1999]花店橱窗布置(DP路径记录)
  13. iptables中规则的关系——以只允许某些IP段访问为例
  14. UGUI和现实世界的比例关系
  15. 串口屏Modbus协议,串口屏的modbus协议资料,串口屏modbus通讯协议开发,串口屏之modbus协议使用技巧
  16. Mac Sublime text3 如何设置更加漂亮好用?
  17. [POJ]1279: Art Gallery
  18. C# 通俗说 委托(和事件)
  19. Oracle 12c RAC 静默安装文档
  20. xilinx Vivado的使用详细介绍(2):创建工程、添加文件、综合、实现、管脚约束、产生比特流文件、烧写程序、硬件验证

热门文章

  1. Asterisk项目概述
  2. Libevent:0异步IO简介
  3. MaxCompute 费用暴涨之存储压缩率降低导致SQL输入量变大
  4. 20.libgdx,stage中默认相机的使用
  5. HTTP参考
  6. Docker镜像部分详解
  7. qt开发ROS gui界面环境配置过程总结
  8. 巧用 PHP 数组函数
  9. C++:只用初始化列表初始化变量的几种情况
  10. HDFS概念名称节点和数据节点-名称节点-文件系统元数据的持久状态