java 27 - 5 反射之 通过反射获取成员方法并使用
2024-10-14 15:49:42
类Method:提供关于类或接口上单独某个方法(以及如何访问该方法)的信息。
A:获取所有方法 数组
1、getMethods 获取该类包括其父类的公共成员方法
2、getDeclaredMethods 获取该类的所有的成员方法
B:获取单个方法
1、getMethod 获取该类所有的公共类单个成员方法
2、getDeclaredMethod 获取该类所有类型的单个成员方法
A.1:获取该类包括其父类的公共成员方法
//获取字节码文件
Class c = Class.forName("zl_Relfect_01.Person"); //获得该类与父类的所有的公共成员方法
Method[] m1 = c.getMethods();
for(Method m : m1){
System.out.println(m);
}
A.2:getDeclaredMethods 获取该类的所有的成员方法
//获取字节码文件
Class c = Class.forName("zl_Relfect_01.Person");
//获取该类的所有类型的成员方法
Method[] m1 = c.getDeclaredMethods();
for(Method m : m1){
System.out.println(m);
}
B:获取单个成员方法:
//获取字节码文件
Class c = Class.forName("zl_Relfect_01.Person");
//无参构造创建对象
Constructor con = c.getConstructor();
Object obj = con.newInstance(); //获取该类单个无参无返回值公共类型的成员方法
//无参的成员方法,只需写成员方法的名称
Method m1 = c.getMethod("show");
// public Object invoke(Object obj,Object... args) 返回值是Object接收,第一个参数表示对象是谁,第二参数表示调用该方法的实际参数
//show是无参,无返回值构造
m1.invoke(obj);//调用Person类的show方法 //获取该类单个有参有返回值公共类型的成员方法
Method m2 = c.getMethod("method", String.class);
//没有返回值
m2.invoke(obj, "哈喽");////调用Person类的method方法 //获取该类单个有参有返回值公共类型的成员方法
Method m3 = c.getMethod("getString", String.class,int.class);
//有返回值, public Object invoke(Object obj,Object... args) 返回值是Object接收
Object ob1 = m3.invoke(obj, "哈喽",123);
System.out.println(ob1); //获取该类单个 无参无返回值的私有成员方法
Method m4 = c.getDeclaredMethod("function");
//取消语言访问检查
m4.setAccessible(true);
//调用Person类的function方法
m4.invoke(obj);
最新文章
- sql where传入类型不同,造成查询结果差异问题
- Linux文件系统层次结构标准
- iOS 解决表单被键盘遮住的问题
- Restrict each user to a single session in window server 2008 R2 or 2012
- Android 使用动态加载框架DL进行插件化开发
- Qt MinGW 使用联合编译IncrediBuild
- MyEclipse build path no actions available
- 模拟生产搭建Standby RAC实验环境(11.2.0.4 DG)
- JMeter脚本录制
- angular ng build --prod 打包报错解决方案
- 在阿里云服务器中用IP连接SQLserver2014提示40,53错误
- Scrapy 框架流程详解
- JS 循环定时的一些思考
- Mysql学习路线
- Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?
- 【Alpha】Scrum Meeting 5
- limits.conf文件修改注意事项
- android 图片大小适配,如何在不同屏幕上适配图片,如何设置可以自适应不同分辨率?
- BZOJ1935: [Shoi2007]Tree 园丁的烦恼(树状数组 二维数点)
- RobotFramework基本用法(二)
热门文章
- Java学习心得之 Linux下搭建JavaWeb环境
- [Android]使用AdapterTypeRender对不同类型的item数据到UI的渲染
- Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信
- VSS、RSS、PSS、USS
- Android+PHP服务器+MySQL实现安卓端的登录
- Android jni简便开发流程
- AFNetworking 3.0.4 的使用
- 分享2个网址二维码API接口
- 用css3绘制你需要的几何图形
- js平滑返回顶部代码