反射获取成员方法并使用【应用】
Class类获取成员方法对象的方法
方法分类
方法名 说明 Method[] getMethods() 返回所有公共成员方法对象的数组,包括继承的 Method[] getDeclaredMethods() 返回所有成员方法对象的数组,不包括继承的 Method getMethod(String name, Class<?>... parameterTypes) 返回单个公共成员方法对象 Method getDeclaredMethod(String name, Class<?>... parameterTypes) 返回单个成员方法对象 示例代码
public class ReflectDemo01 {public static void main(String[] args) throws Exception {//获取Class对象Class<?> c = Class.forName("com.leon_02.Student");//Method[] getMethods() 返回一个包含 方法对象的数组, 方法对象反映由该 Class对象表示的类或接口的所有公共方法,包括由类或接口声明的对象以及从超类和超级接口继承的类//Method[] getDeclaredMethods() 返回一个包含 方法对象的数组, 方法对象反映由 Class对象表示的类或接口的所有声明方法,包括public,protected,default(package)访问和私有方法,但不包括继承方法
// Method[] methods = c.getMethods();Method[] methods = c.getDeclaredMethods();for(Method method : methods) {System.out.println(method);}System.out.println("--------");//Method getMethod(String name, Class<?>... parameterTypes) 返回一个 方法对象,该对象反映由该 Class对象表示的类或接口的指定公共成员方法//Method getDeclaredMethod(String name, Class<?>... parameterTypes) 返回一个 方法对象,它反映此表示的类或接口的指定声明的方法 Class对象//public void method1()Method m = c.getMethod("method1");//获取无参构造方法创建对象Constructor<?> con = c.getConstructor();Object obj = con.newInstance();// obj.m();//在类或接口上提供有关单一方法的信息和访问权限//Object invoke(Object obj, Object... args) 在具有指定参数的指定对象上调用此 方法对象表示的基础方法//Object:返回值类型//obj:调用方法的对象//args:方法需要的参数m.invoke(obj);// Student s = new Student();
// s.method1();}
}
Method类用于执行方法的方法
方法名 | 说明 |
---|---|
Objectinvoke(Object obj,Object... args) | 调用obj对象的成员方法,参数是args,返回值是Object类型 |
反射获取成员方法并使用练习【应用】
案例需求
通过反射获取成员方法并调用
代码实现
学生类:参见上方学生类
测试类
public class ReflectDemo02 {public static void main(String[] args) throws Exception {//获取Class对象Class<?> c = Class.forName("com.leon_02.Student");//Student s = new Student();Constructor<?> con = c.getConstructor();Object obj = con.newInstance();//s.method1();Method m1 = c.getMethod("method1");m1.invoke(obj);//s.method2("林青霞");Method m2 = c.getMethod("method2", String.class);m2.invoke(obj,"林青霞");// String ss = s.method3("林青霞",30);
// System.out.println(ss);Method m3 = c.getMethod("method3", String.class, int.class);Object o = m3.invoke(obj, "林青霞", 30);System.out.println(o);//s.function();
// Method m4 = c.getMethod("function"); //NoSuchMethodException: com.itheima_02.Student.function()Method m4 = c.getDeclaredMethod("function");m4.setAccessible(true);m4.invoke(obj);}
}
反射获取成员方法并使用【应用】相关推荐
- Java基础--通过反射获取成员方法并使用
/** 通过反射获取成员方法并使用 * Method getMethod(String name, Class<?>... parameterTypes) * Method:* Objec ...
- 反射获取成员方法并运行
/** 反射获取成员防范并运行* public void eat() {}*/ public class ReflectDemo6 {public static void main(String[] ...
- [Java基础]反射获取成员方法并使用
代码如下: package ClassObjectPack01;import ClassObjectPack.Student;import java.lang.reflect.Constructor; ...
- [Java基础]反射获取成员方法并使用练习
代码如下: package ClassObjectPack;public class Student {private String name;int age;public String addres ...
- Java24-day15(完结)【反射(类加载器、反射)、反射获取构造方法-成员变量-成员方法、模块化(概述、模块基本使用、模块服务使用)】
视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...
- 反射获取空参数成员方法并运行
package cn.learn.demo1;import java.lang.reflect.Method;/** 反射获取成员方法并运行* public void eat(){}*/ public ...
- java 反射 获取成员_java 反射获取成员
package com.wxjaa; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java ...
- 反射获取有参数的成员方法并运行
package cn.learn.demo1;import java.lang.reflect.Method;/** 反射获取有参数的成员方法并执行* public void sleep(String ...
- Java中反射获取成员变量、构造方法、成员方法及类名
都说反射是框架的灵魂,但是反射到底是啥呢,今天就聊聊反射的基础操作,也是必备操作. 反射机制是在程序运行时,对任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用他的任意一个属性和 ...
最新文章
- LESSON 12.8 原理进阶 (1):GBDT数学流程与残差概念辨析
- H5+JS实现《Just Do 8》游戏源码分享
- Linux最全命令详解,请记下来!
- 一个div压在另一个div上面_【CSS小分享】用CSS画一个新拟态风格键盘
- IDEA如何添加本地项目到git上
- transient关键字和volatile关键字
- java jndi tomcat_tomcat下jndi的三种配置方式
- 关于银行,有哪些有趣的冷知识
- SharePoint Designer 2007,强大的工作流设计器
- springboot配置手动提交_Spring Boot 入门教程 | 图文讲解
- Intel CPU参数查询网站
- c++语言杨辉三角,杨辉三角 (C++代码)
- 分享七个超好用的免费工具网站,每一个都是神器!
- 如何通过初等行(列)变换求矩阵的单位矩阵(同时还能求逆)?
- Jenkins - cannot find symbol
- Android xml里面product的值来自哪里以及怎么影响编译?
- 理解Javascript的正则表达式
- 【python】模拟淘宝的客服自动回复系统-socket,json,time模块的应用
- 无FTTR不千兆,华为星光F30让家中不再有“隐秘的角落”
- Swift 首次调试断点慢的问题解法 | 优酷 Swift 实践
热门文章
- 大道至简读书笔记02
- spring mvc后端校验validator
- hdu 3068 最长回文【manacher】(模板题)
- django实现图片上传和显示
- 2017年总结的前端文章——CSS高级技巧汇总
- bootstrap bootstrapTable 隐藏列
- Oracle学习操作(6)函数与存储过程
- OSI七层与TCP/IP五层
- ibatis的iterate使用
- ---WebCam网络摄像头7 cmos--yuv rgb , Format............:V4L2_PIX_FMT_YUYV