利用反射(invoke)来获取一个类中的方法
本文接上文“反射之获取类的信息”,利用反射(invoke)来获取一个类中的方法来执行。
1、定义一个类,包含三个名称相同,参数不同的方法
1 class A{ 2 public void print(){ 3 System.out.println("Hello,World"); 4 } 5 6 public void print(int a,int b){ 7 System.out.println(a+b); 8 } 9 public void print(String a,String b){10 System.out.println(a.toUpperCase()+","+b.toLowerCase());11 }12 }
2、利用方法的反射(invoke)分别获取该类三个方法并执行
1 public class Test { 2 public static void main(String[] args) { 3 /** 4 * 获取print(int,int)方法 5 * 1、获取类的类类型 6 */ 7 A a1 = new A(); 8 Class clazz = a1.getClass(); 9 /**10 * 2、获取方法(名称、参数列表)11 * getMethod()获取的是public方法12 * getDeclaredMethod()获取的是自己声明的方法13 */14 try {15 // Method m = clazz.getMethod("print",new Class[]{int.class,int.class});16 Method m = clazz.getMethod("print", int.class, int.class);17 //方法的反射操作,用m对象进行方法调用,a1.print完全相同18 //方法没有返回值返回null,有返回值返回具体的返回值19 // Object obj = m.invoke(a1,new Object[]{10,20});20 Object obj = m.invoke(a1,10,20);21 22 System.out.println("================================================");23 24 Method m2 = clazz.getMethod("print", String.class, String.class);25 m2.invoke(a1,"aaa","BBB");26 27 System.out.println("================================================");28 29 Method m3 = clazz.getMethod("print");30 m3.invoke(a1);31 } catch (Exception e) {32 e.printStackTrace();33 }34 }35 }
3、完整代码


1 package com.format.test; 2 3 import java.lang.reflect.Method; 4 5 /** 6 * Created by Format on 2017/6/3. 7 */ 8 public class Test { 9 public static void main(String[] args) {10 /**11 * 获取print(int,int)方法12 * 1、获取类的类类型13 */14 A a1 = new A();15 Class clazz = a1.getClass();16 /**17 * 2、获取方法(名称、参数列表)18 * getMethod()获取的是public方法19 * getDeclaredMethod()获取的是自己声明的方法20 */21 try {22 // Method m = clazz.getMethod("print",new Class[]{int.class,int.class});23 Method m = clazz.getMethod("print", int.class, int.class);24 //方法的反射操作,用m对象进行方法调用,a1.print完全相同25 //方法没有返回值返回null,有返回值返回具体的返回值26 // Object obj = m.invoke(a1,new Object[]{10,20});27 Object obj = m.invoke(a1,10,20);28 29 System.out.println("================================================");30 31 Method m2 = clazz.getMethod("print", String.class, String.class);32 m2.invoke(a1,"aaa","BBB");33 34 System.out.println("================================================");35 36 Method m3 = clazz.getMethod("print");37 m3.invoke(a1);38 } catch (Exception e) {39 e.printStackTrace();40 }41 }42 }43 44 class A{45 public void print(){46 System.out.println("Hello,World");47 }48 49 public void print(int a,int b){50 System.out.println(a+b);51 }52 public void print(String a,String b){53 System.out.println(a.toUpperCase()+","+b.toLowerCase());54 }55 }
4、执行结果
以上是利用反射(invoke)来获取一个类中的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

番茄小说是一款非常热门的小说阅读软件,我们在番茄小说中经常会有新的小说和漫画可以去阅读,每一本小说和漫画都很有意思,很多小伙伴也想着要去写小说来赚取赚取零花钱,在把自己想要写的小说内容编辑成文字,那么我们要怎么样在这里面去写小说呢?小伙伴们都不知道,那就让我们一起到本站本站中花点时间来看写小说的方法介绍吧。分享番茄小说写小说方法教程 1、首先在手机上打开番茄免费小说app,点击个人中心——作家中心 2、跳转到番茄作家助手页面——点击创建新书在小说的结

而后悔莫及、人们常常会因为一些原因不小心将某些联系人删除、微信作为一款广泛使用的社交软件。帮助用户解决这一问题,本文将介绍如何通过简单的方法找回被删除的联系人。1.了解微信联系人删除机制这为我们找回被删除的联系人提供了可能性、微信中的联系人删除机制是将其从通讯录中移除,但并未完全删除。2.使用微信内置“通讯录恢复”功能微信提供了“通讯录恢复”节省时间和精力,用户可以通过该功能快速找回之前被删除的联系人,功能。3.进入微信设置页面点击右下角,打开微信应用“我”再点击右上角设置图标、进入设置页面,,

反射机制允许程序在运行时获取和修改类信息,它可用于实现接口和抽象类的反射:接口的反射:通过Class.forName()获取接口反射对象,访问其元数据(名称、方法和字段)。抽象类的反射:与接口类似,可获取抽象类的反射对象,访问其元数据以及非抽象方法。实战案例:反射机制可用于实现动态代理,通过动态创建代理类在运行时拦截对接口方法的调用。

Go语言中可以使用反射来访问私有字段和方法:访问私有字段:通过reflect.ValueOf()获取值的反射值,再使用FieldByName()获取字段的反射值,并调用String()方法打印字段的值。调用私有方法:同样通过reflect.ValueOf()获取值的反射值,再使用MethodByName()获取方法的反射值,最后调用Call()方法执行方法。实战案例:通过反射修改私有字段值和调用私有方法,实现对对象的控制和单元测试覆盖。

字体大小的设置成为了一项重要的个性化需求,随着手机成为人们日常生活的重要工具。以满足不同用户的需求、本文将介绍如何通过简单的操作,提升手机使用体验,调整手机字体大小。为什么需要调整手机字体大小-调整字体大小可以使文字更清晰易读-适合不同年龄段用户的阅读需求-方便视力不佳的用户使用手机系统自带字体大小设置功能-如何进入系统设置界面-在设置界面中找到并进入"显示"选项-找到"字体大小"选项并进行调整第三方应用调整字体大小-下载并安装支持字体大小调整的应用程序-打开应用程序并进入相关设置界面-根据个人

手机游戏成为了人们生活中不可或缺的一部分,随着科技的发展。它以其可爱的龙蛋形象和有趣的孵化过程吸引了众多玩家的关注,而其中一款备受瞩目的游戏就是手机版龙蛋。帮助玩家们在游戏中更好地培养和成长自己的小龙,本文将向大家介绍手机版龙蛋的孵化方法。1.选择合适的龙蛋种类玩家需要仔细选择自己喜欢并且适合自己的龙蛋种类,根据游戏中提供的不同种类的龙蛋属性和能力。2.提升孵化机的等级玩家需要通过完成任务和收集道具来提升孵化机的等级,孵化机的等级决定了孵化速度和孵化成功率。3.收集孵化所需的资源玩家需要在游戏中

Go语言方法与函数的区别在于与结构体的关联性:方法与结构体关联,用于操作结构体数据或方法;函数独立于类型,用于执行通用操作。

手机膜成为了必不可少的配件之一,随着智能手机的普及。延长其使用寿命,选择一款合适的手机膜可以保护手机屏幕。帮助读者选出最适合自己的手机膜、本文将介绍选购手机膜的几大要点与技巧。了解手机膜的材质及类型PET膜,TPU等、手机膜有多种材质,包括钢化玻璃。PET膜较为柔软、钢化玻璃膜具有较好的耐刮花性能,TPU则具有较好的防震性能。可以根据个人偏好及需求来决定,在选择时。考虑屏幕的保护程度不同类型的手机膜对屏幕的保护程度不同。PET膜则主要起到防刮花作用,钢化玻璃膜具有较好的耐摔性能。可以选择具有较好
