博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):
Java中Method.invoke方法,反射?

正常来说,我们调用对象的方法是通过dot运算符来进行的,这里我们介绍另一种方法,有以下几个步骤:1,获取该类的Class Type;2,通过getMethod方法获取Method对象;3,通过调用invoke方法来执行对象的某个方法;这里要特别注意下getMethod方法和invoke方法的参数,见下面的例子:

package reflectTest;import java.lang.reflect.Method;/*** 通过获取类类型,进而获取Method对象,进而调用类的方法,* 和直接通过类的对象来调用方法可以达到一样的效果,这里的示例调用了对象的三个方法* @author Wang**/
public class MethodDemo1 {public static void main(String[] args) {// 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型,要获取print(int ,int )方法A a1 = new A();Class c = a1.getClass();// 2.获取方法 名称和参数列表来决定 getMethod获取的是public的方法 getDelcaredMethod自己声明的方法try {System.out.println("==================调用print(int a, int b)方法");// Method m = c.getMethod("print", new Class[]{int.class,int.class});Method m = c.getMethod("print", int.class, int.class);// 方法的反射操作// a1.print(10, 20);方法的反射操作是用m对象来进行方法调用 和a1.print调用的效果完全相同// 方法如果没有返回值返回null,有返回值返回具体的返回值// Object o = m.invoke(a1,new Object[]{10,20});Object o = m.invoke(a1, 10, 20);System.out.println("==================调用print(String a, String b)方法");// 获取方法print(String,String)Method m1 = c.getMethod("print", String.class, String.class);// 用方法进行反射操作// a1.print("hello", "WORLD");o = m1.invoke(a1, "hello", "WORLD");System.out.println("===================调用无参的print方法");// Method m2 = c.getMethod("print", new Class[]{});Method m2 = c.getMethod("print");// m2.invoke(a1, new Object[]{});m2.invoke(a1);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
}class A {public void print() {System.out.println("helloworld");}public void print(int a, int b) {System.out.println(a + b);}public void print(String a, String b) {System.out.println(a.toUpperCase() + "," + b.toLowerCase());}
}

Java中Method.invoke方法相关推荐

  1. java中的invoke方法_详解Java中Method的Invoke方法

    在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用子类的对象,而子类改写了这个方法,从子类class通过getDeclaredMethod也能获取到M ...

  2. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  3. Java中获得了方法名称的字符串,怎么样调用该方法

    问题: Java中获得了方法名称的字符串,怎么样调用该方法 如果我有以下两个变量 Object obj; String methodName = "getName"; 在不知道ob ...

  4. Java动态代理invoke方法自动执行的原因

    Java动态代理invoke方法自动执行的原因 在动态代理中,一般的是先调用Proxy.newProxyInstance()生成代理对象,然后通过调用代理对象的对应方法来实现增强,这里假设代理了被代理 ...

  5. java中的compareto方法

    一.java中的compareto方法 1.返回参与比较的前后两个字符串的asc码的差值,如果两个字符串首字母不同,则该方法返回首字母的asc码的差值 String a1 = "a" ...

  6. Java中重写equals()方法时注意点

    Java中重写equals()方法时注意点 一直说,重写一个对象的equals()方法时我们必须重写HashCode()方法,但是如果我们不重写呢?会有什么影响呢? 首先看一下,什么情况下我们需要重写 ...

  7. 浅谈Java中的hashcode方法

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据 ...

  8. JAVA中 什么是方法签名?

    what is method signature in java? // 在 Java 中什么是方法签名? 书中是这么说的: Definition: Two of the components of ...

  9. java中的push方法_Java ArrayDeque push()方法与示例

    java中的push方法 ArrayDeque类push()方法 (ArrayDeque Class push() method) push() Method is available in java ...

  10. java中的native方法性能到底怎么样?

    前言 java中的native方法性能到底怎么样? 第一次写博客,如果写的不好,望见谅,烦请指出问题,虚心学习 先说结论,native 方法性能不如java方法 一.native方法? 主要是java ...

最新文章

  1. 第五篇:Visual Studio 2008 Web开发使用的新特性
  2. java 基本变量类型_Java自学-基本变量类型
  3. JavaScript —— 如何判断一个非数字输入
  4. python是属于it界吗_转行IT行业,Python是不是一个好的选择?
  5. Platform.Uno介绍
  6. Python如何忽略warning的输出
  7. 小汤学编程之JavaScript学习day03——对象、Array数组、String字符、Date日期、JSON
  8. Linux 查看磁盘容量、查找大文件、查找大目录
  9. web:网站性能工具Yslow
  10. 另一个SqlParameterCollection 中已包含 SqlParameter[解决方案]
  11. 互联网公司的敏捷开发是怎么回事?这一份软件工程书单送给你!
  12. Linux系统安全及应用详解
  13. js 中~~是什么意思?
  14. Reggie外卖项目 —— 项目开发整体介绍
  15. 仿花生日记官网源码+前后端分离/独立后台
  16. vs2013 error C1083: 无法打开包括文件: SDKDDKVer.h: No such file or direc
  17. html5 css 渐变背景,css渐变,css渐变色背景
  18. 浅谈客户端,服务器端,终端
  19. Frame profiling
  20. 胜者先胜而后求战,败者先战而后求胜

热门文章

  1. 刀具磨损类论文观后总结
  2. UG编程加工之非切削移动
  3. 赏析角度有哪些_从哪些角度赏析句子
  4. marvell raid linux,Marvell SATA Raid控制器 驱动程序下载——更新 Marvell 软件
  5. win7系统无法连接蓝牙的强推方案
  6. selenium.webdriver网页无法正常打开的问题
  7. java开源规则引擎比较_常用规则引擎比较分析
  8. 2020腾讯校园实习生招聘面经(Offer):系统技术运维岗和后台开发岗
  9. IT人物——冯诺依曼
  10. “电脑开的热点手机连接不上”的问题寻解过程记录