博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(转)Java.lang.reflect.Method invoke方法 实例
阅读量:6634 次
发布时间:2019-06-25

本文共 2100 字,大约阅读时间需要 7 分钟。

背景:今天在项目中用到Method 的invoke方法,但是并不理解,查完才知道,原来如此!

import java.lang.reflect.Method;    /**  * Java.lang.reflect.Method invoke方法 实例  * 程序中配置文件中有对实体对象的get,set方法的描述,通过应用invoke()方法调用实体对象的method方法 return  * m_oGetter.invoke(oSrc, null); oSrc为实体对象,Method m_oGetter  * 这里的m_oGetter是对应于在代理实例(oSrc)上调用的接口方法的 Method 实例,下面参考示例代码  *   */    class Employee {      // 定义一个员工类      public Employee() {          age = 0;          name = null;      }        // 将要被调用的方法      public void setAge(int a) {          age = a;      }        // 将要被调用的方法      public int getAge() {          return age;      }        // 将要被调用的方法      public void printName(String n) {          name = n;          System.out.println("The Employee Name is: " + name);      }        private int age;      private String name;  }    public class InvokeMethods {        public static void main(String[] args) {            Employee emp = new Employee();          Class
cl = emp.getClass(); // /getClass获得emp对象所属的类型的对象,Class就是类的类 // /Class是专门用来描述类的类,比如描述某个类有那些字段, // /方法,构造器等等! try { // /getMethod方法第一个参数指定一个需要调用的方法名称 // /这里是Employee类的setAge方法,第二个参数是需要调用 // 方法的参数类型列表,是参数类型!如无参数可以指定null // /该方法返回一个方法对象 Method sAge = cl.getMethod("setAge", new Class[] { int.class }); Method gAge = cl.getMethod("getAge", null); Method pName = cl.getMethod("printName", new Class[] { String.class }); /** *使用invoke调用指定的方法 */ Object[] args1 = { new Integer(25) }; // 参数列表 // emp为隐式参数该方法不是静态方法必须指定 sAge.invoke(emp, args1); Integer AGE = (Integer) gAge.invoke(emp, null); int age = AGE.intValue(); System.out.println("The Employee Age is: " + age); Object[] args3 = { new String("Jack") }; pName.invoke(emp, args3); } catch (Exception e) { e.printStackTrace(); } System.exit(0); } }

运行结果:

The Employee Age is: 25

The Employee Name is: Jack

 

转载地址:http://idbvo.baihongyu.com/

你可能感兴趣的文章
Cocos2d-x 精灵图片预加载中不会出现重复加载问题
查看>>
让UpdatePanel支持文件上传(1):开始
查看>>
活字格企业Web应用生成器V3.0发布更新,支持插件管理和多人协作开发
查看>>
Spring RMI
查看>>
利用vs.net快速开发windows服务(总结)
查看>>
VC 消息映射
查看>>
GO语言练习:组合的用法
查看>>
技术人的生命之源在于绝不固步自封而不断进取的精神
查看>>
Express框架使用以及数据库公共操作类整理(Win7下的NodeJs)
查看>>
kibana智能检索发送多次_msearch —— 配置index pattern,同时设置时间段,就知道到底是在哪些索引里去查找数据了...
查看>>
Linux 小知识翻译 - 「命令行的提示符」
查看>>
Tcp通信
查看>>
【Visual C++】Windows GDI贴图闪烁解决方法
查看>>
blueImp/jQuery file upload 的正确用法(限制上传大小和文件类型)
查看>>
[SilverLight] DataGrid实现批量输入(like Excel)
查看>>
Security2:角色和权限
查看>>
linq to js使用汇总
查看>>
【下载源码】在线生成网页缩略图.超越Snap.com:WebSnap Beta 1.1 发布。感谢博客园的“萧寒”重写的底层。开源。...
查看>>
yyMMddHHmm字符日期格式为yyyy-MM-dd HH:mm:ss日期格式
查看>>
Hadoop里如何Mysql编程
查看>>