來源:http://blog.csdn.net/loyoveui/archive/2007/06/22/1662154.aspx

package test;

import java.lang.reflect.Method;

public class InvokeTest {
  /**
   *
   * main 方法
   * @param args
   * void
   */
  public static void main(String[] args) {
    try {
      InvokeTest invokeTest = new InvokeTest();
      //1.第一步获取方法的映射
      //String[] realArgs = {"",""};//定义一个与execute方法第1个参数对应的String数组(注意此数组只为获取方法的映射)
      //Integer in = new Integer(0);//定义一个与execute方法第2个参数对应的Integer对象     
      //Class[] c_args = new Class[2];
      //c_args[0] = realArgs.getClass();//分别获取以上两个参数的class
      //c_args[1] = in.getClass();
      //Method method = invokeTest.getClass().getMethod("execute", c_args);//返回值为test方法的映射(类型Method)
      /**
       * 注意,以上几句(11-16行)可以写成下面一句
       * 目的是获取execute方法的映射,第一个参数是方法,第二个参数是execute方法所需要的参数列表,类型是class
       * 所以当execute方法没有参数时,getMethod第二个参数为null即可
       */
      Method method = invokeTest.getClass().getMethod("execute",
          new Class[] { String[].class, Integer.class });
     
      //2.第二步调用方法
      //String[] a1={"zhong","cheng"};//这里的数组用于做真正调用时的参数
      //Integer a2=new Integer(5);//同上
      //Object[] allArgs = new Object[2];
      //allArgs[0] = a1;
      //allArgs[1] = a2;
      //Object[] result = (Object[])method.invoke(invokeTest, allArgs);//调用execute方法并获取返回值
      /**
       * 注意,以上几句(21-26行)可以写成下面一句
       * 目的是调用实例invokeTest的execute方法,参数(包含一个String数组和一个Integer对象)类型是Object
       * invoke()方法的第一个参数表示被调用的方法所属类的实例,所以如果execute是静态方法,
       * invoke的第一个参数可以为空
       */
      Object[] result = (Object[])method.invoke(invokeTest, new Object[] {
          new String[] { "zhong", "cheng" }, new Integer(5) });
      //打印出返回值
      for(int i=0;i<result.length;i++){
        System.out.print(result[i]);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }

}

/**
   *
   * 用于测试的execute方法,此处只是将String[]和Integer的值打印出来
   * 并返回一个提示性的字符串数组
   * @param String[] str
   * @param Integer intN
   * String[]
   */
  public String[] execute(String[] str, Integer intN) {
    for (int j = 0; j < str.length; j++) {
      System.out.println(str[j]);
    }
    System.out.println(intN.intValue());
    return new String[]{"display ","have ","bean ","finished "," !"};
  }

}

一个Java反射机制例子相关推荐

  1. 一个例子让你了解Java反射机制

    本文来自:blog.csdn.net/ljphhj JAVA反射机制: 通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运 ...

  2. (转)个例子让你了解Java反射机制

    个例子让你了解Java反射机制 原文地址:http://blog.csdn.net/ljphhj/article/details/12858767 JAVA反射机制:   通俗地说,反射机制就是可以把 ...

  3. Java反射机制demo(四)—获取一个类的父类和实现的接口

    2019独角兽企业重金招聘Python工程师标准>>> Java反射机制demo(四)-获取一个类的父类和实现的接口 1,Java反射机制得到一个类的父类 使用Class类中的get ...

  4. 反射 字段_详解面试中常考的 Java 反射机制

    反射(Reflection) 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"自审",并能直接操作程序的内部属性和方法. 反射是一项高级 ...

  5. java基础-java反射机制

    2019独角兽企业重金招聘Python工程师标准>>> 引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓"登高必自卑,涉远必自迩" ...

  6. 利用java反射机制进行对象操作

    我们经常使用COMMONS-BEANUTILS包来进行bean的操作,例如从map到bean获从bean到map的映射,那么实现的原理是什么呢,下面举个简单的操作的例子:首先,我建立一个bean pu ...

  7. java继承 映射_hibernate继承关系映射和java反射机制的运用

    转:http://blog.csdn.net/derpvailzhangfan/article/details/1957946 ,感谢博主分享 Notes:hibernate元数据的运用:uuid的概 ...

  8. java初反射_初始 java 反射机制 (一)

    反射机制详解 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为j ...

  9. 工作中用到的java反射机制_(转)JAVA-反射机制的使用

    Java反射机制的实现原理 反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的能力.通过这种能力可以彻底的了解自身的情况为下一步的动作做准备.下面具体介绍一下java的反射机制.这里你将颠 ...

最新文章

  1. ELK6.0已取消filebeat配置document_type
  2. JavaScript函数大全
  3. 使用SharePoint 2007 Web Service上传文件到文档库
  4. PC SERVER 序列号查询
  5. Eclipse plugin folder
  6. 某法院HP-P4500存储数据恢复案例
  7. NORDIC 52832开发2之串口空闲时间过长
  8. 微软发布 OpenJDK 预览版!
  9. 整合重组叠加市场扩容 “广电云”发展将提速
  10. k8s资源对象及API群组
  11. 2021.10.13 向日葵黑屏驱动卸载方法
  12. atmega 128 单片机 开发 例子 例程 教程 ADC PWM 呼吸灯
  13. 2022年最新BIM计费标准,涉及14省市
  14. html怎么给表头加斜线,如何为Excel中的表格表头添加斜线和文字?这才是正确的添加方式-excel表格斜线...
  15. 打工人也不好惹!一份校招“恶霸”指南强势冲上GitHub热榜,一天暴涨 1000 星!
  16. 【超好懂的比赛题解】第四届SCPC中南民族大学程序设计竞赛(同步赛)
  17. 【LearningChain】WhenMachineLearningMeetsBlockchainADecentralizedPrivacy-preserving and SecureDesign
  18. 计算机视觉领域常见期刊和会议
  19. java jsp聊天系统_java web实现简单聊天室
  20. 2020 年度开发者工具 Top 100 名单!

热门文章

  1. 第一章 计算机、程序和Java概述 复习题 解答
  2. 使用dynDNS+openSSH+putty突破公司防火墙
  3. C# 捕获系统闪退BUG
  4. MFC中STL容器中Vector,List,Map基本用法汇总
  5. 怎么让datagridview中的某一行不可编辑
  6. Retrofit网络请求参数注解,@Path、@Query、@Post、Body等总结(超级实用)以及以Json格式和form-data格式提交数据
  7. 频偏纠正matlab实现,Matlab关于OFDM同步定时估计和频偏估计的算法
  8. python写一个app接收摄像头传输的视频_使用Python的Flask框架实现视频的流媒体传输...
  9. 服务器设备日常维护与管理论文,浅谈设备管理与维护论文
  10. 几个 PHP 的“魔术常量”