java反射学习笔记(3)----使用反射来调用方法
来源:互联网 发布:postgresql mysql 电商 编辑:程序博客网 时间:2024/06/07 20:22
我们在类中调用方法的时候,一般都是,先实例化一个具体的对象,然后用这个对象来调用具体的函数方法,而我们说的利用反射来调用方法,是用函数方法对象来调用具体的对象。
1、getMethod(“方法名”,参数类型的类类型)
我们要获得一个方法的话,首先要获得一个类的类类型,之后再用类类型来getMethod方法来获得具体的方法,这个方法的返回值是一个Method对象。
2、invoke方法
该方法由Method对象来调用,具体格式:method.invoke(a1,方法参数);
3、 具体代码实现
package com.imooc.reflect;import java.lang.reflect.Method;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);方法的反射操作是用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,String) Method m1 = c.getMethod("print",String.class,String.class); //用方法进行反射操作 //a1.print("hello", "WORLD"); o = m1.invoke(a1, "hello","WORLD"); System.out.println("==================="); // 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 block e.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()); }}
阅读全文
0 0
- java反射学习笔记(3)----使用反射来调用方法
- java反射学习笔记(3)---使用Class来获取方法、成员变量、构造函数信息
- Java SE学习笔记:反射、反射创建实例,反射调用方法
- Java使用反射调用方法
- java反射(3)--反射的调用方法
- 反射机制学习3(反射调用方法)
- 反射:使用反射调用方法
- java笔记(6) --反射中的方法调用
- java基础-反射3(反射,反射创建对象,操作对象属性,调用对象方法)
- 使用反射调用方法
- java反射调用方法
- Java反射调用方法
- Java 反射 方法调用
- java 反射 方法调用
- java反射调用方法
- JAVA 反射调用方法
- java 反射调用方法
- Java反射调用方法
- 蓝桥杯 算法训练 阶乘末尾
- IPtables中SNAT、DNAT和MASQUERADE的含义
- 期末答辩的题目
- SpringBoot 集合mybatis代码生成器
- Linux作业
- java反射学习笔记(3)----使用反射来调用方法
- 数字图像处理-离散傅里叶变换(opencv3+C++显示)
- 如何避免产品设计中的「生造方案」和「重新发明轮子」
- android系统启动流程
- 【OI之路】11更高级数论-2莫比乌斯反演
- linux分区的基本方案
- 产品设计过程中,异常流程设计的那些事儿
- 实验吧-你真的会PHP吗?writeup
- java多线程详细基础概念