Java 方法的反射
方法的反射
(1)如何获取某个方法
方法的名称和参数列表才能唯一确定某个方法
(2)方法反射放操作
method.invokw(对象,参数列表);
看下面这个 demo
- package practice.Reflect;
- import java.lang.reflect.Method;
- /**
- * @Author: 言曌
- * @Date: 2017/11/17
- * @Time: 上午9:36
- */
- public class MethodDemo1 {
- public static void main(String args[]) {
- //要获取print(int,int)方法
- //1、要获取一个方法就是获取类的信息,要获取类的信息首先要获取类的类类型
- A a1 = new A();
- Class c = a1.getClass();
- /**
- * 2、获取方法 名称和参数列表来决定
- * getMethod()获取的是public的方法
- * getDelcaredMethod()自己声明的方法
- */
- try {
- //写法一
- // Method m = c.getMethod("print",new Class[]{int.class,int.class});
- //写法二
- Method m = c.getMethod("print",int.class,int.class);
- //之前的操作,非方法的反射
- a1.print(10,20);
- //方法的反射操作,和上面a1.print效果完全相同
- //方法如果没有返回值,返回null,有返回值返回具体的返回值
- //写法一
- m.invoke(a1,new Object[]{10,20});
- //写法二
- m.invoke(a1,10,20);
- System.out.println("----------------------------");
- //获取方法print(String,String)
- Method m1 = c.getMethod("print",String.class,String.class);
- //用方法进行反射操作
- m1.invoke(a1,"hello","world");
- System.out.println("----------------------------");
- //获取方法print()
- Method m2 = c.getMethod("print");
- //用方法进行反射
- m2.invoke(a1);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- class A {
- public void print() {
- System.out.println("Hello World");
- }
- 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());
- }
- }
在 A 类中有三个方法,同名但是参数不同。
平时我们要调用他们只需要
A a1 = new A();
a1.print(10,20);即可
现在我们通过反射的方式
先要获取类的类类型,然后再获取的其指定的方法
A a1 = new A();
Class c = obj.getClass();
Method m = c.getMethod("print",int.class,int.class);
m.invoke(a1);
通过反射的方式得到的结果和 a1.print() 方式是一样的。
Java 方法的反射相关推荐
- Java方法的反射(对反射的进一步认识)
目录 理论 实例 理论 这是学Java反射的第三天了,今天对Java反射有了新的认识,个人觉得,Java的反射,实际上是存在一个对象的副本.这个对象的副本实际上是一个Class指针(Java里面没有指 ...
- Java方法反射的实现原理
反射方面先看Java反射与动态代理 "物有本末,事有始终.知其先后,则近道矣" 前段时间看了笨神的 从一起GC血案谈到反射原理一本,就把Java方法的反射机制实现撸了一遍. 方法反 ...
- 深入理解Java中的反射机制和使用原理!详细解析invoke方法的执行和使用
反射的概念 反射:Refelection,反射是Java的特征之一,允许运行中的Java程序获取自身信息,并可以操作类或者对象的内部属性 通过反射,可以在运行时获得程序或者程序中的每一个类型的成员活成 ...
- Java 高级特性 --- 反射
From:Java 高级特性 --- 反射:https://www.jianshu.com/p/9be58ee20dee From:Java 基础之 --- 反射(非常重要):https://blog ...
- Java 中使用反射来创建对象、调用方法
Java 中使用反射来创建对象.调用方法 反射创建对象 反射调用方法 反射调用私有方法 反射调用可变参私有方法 反射调用的方法自身可以抛出异常的情形 假设已有下面的类: import java.l ...
- 深入分析 Java 方法反射的实现原理
2019独角兽企业重金招聘Python工程师标准>>> 方法反射实例 public class ReflectCase { public static void main(Strin ...
- java測試動態方法_java反射学习
反射的核心Class类 Class类是一个特殊的类,不能手动创建,只能由jvm来创建. jvm在类加载时会为每个类生成一个与之对应的Class对象在Java堆中(且每个类只会有一个对应的Class对象 ...
- JAVA反射机制、Class类及动态加载、成员变量构造方法其他方法的反射与调用、代理模式AOP
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法: 对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语言 ...
- java反射方法_java反射之方法反射的基本操作方法
本文接上文"java反射之获取类的信息方法(推荐)",利用反射(invoke)来获取一个类中的方法来执行. 1.定义一个类,包含三个名称相同,参数不同的方法 class A{ pu ...
- java 反射 set方法_java 反射调用set方法
Java语言中的许多库类名称,多与咖啡有关.下面是小编为您带来的java 反射调用set方法,希望对大家有所帮助. java 反射调用set方法: import java.beans.Property ...
最新文章
- 回到顶部和返回首页jquery插件
- ise 时钟约束_「新手入门」ISE工程升级到Vivado及板级信号调试技术
- linux下dhcp配置(一)
- spring cloud组件服务架构
- 【UOJ 92】有向图的强连通分量
- Linux内核系统架构介绍
- matlab求傅里叶级数展开式_傅里叶级数:从向量的角度看函数
- SharePoint2010探索日志
- c++调用powershell_告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始
- 江苏省高等数学竞赛经验分享
- 为何耐得住寂寞更容易成功
- matlab蜂窝异构网络基站用户矩阵 依照最近距离配对/快速计算两矩阵彼此距离
- python画八卦_python编程也能八卦?
- android p 模拟器开启刘海模式
- DVWA通过攻略之SQL注入
- 最透彻的分析!NTC热敏电阻与浪涌电流,热启动不会失效?
- 采用先进先出原则对货物的库存进行处理
- 滴答清单(ticktick) 网页版api
- java suprious wakeup_多线程编程中条件变量和的spurious wakeup 虚假唤醒
- 基于QT(C++)实现房贷计算器【100010502】
热门文章
- SpringBoot结合ActiveMQ(同时支持Queue和Topic)
- pythonGUI-wxpython
- 什么是Code Review
- JavaScript中“基本类型”之争
- 公司培训笔记(1):沟通的技巧
- [转]Using Named Pipes (FIFOs) with Bash
- mac上配置rails开发环境
- 利用ajax如何根据权限加载目录,AJAX调用框架,包含权限验证
- mysql 正则 捕获_在mysql中模拟正则表达式捕获组
- git 查看修改明细_Git(查看修改记录)