java反射学习笔记(3)----使用反射来调用方法
2017-11-25 14:28
731 查看
我们在类中调用方法的时候,一般都是,先实例化一个具体的对象,然后用这个对象来调用具体的函数方法,而我们说的利用反射来调用方法,是用函数方法对象来调用具体的对象。
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()); } }
相关文章推荐
- Android(java)学习笔记107-1:通过反射获得带参构造方法并且使用
- Android(java)学习笔记107-0:通过反射获得构造方法并且使用
- Android(java)学习笔记109:通过反射获取成员变量和成员方法并且使用
- java反射学习笔记(3)---使用Class来获取方法、成员变量、构造函数信息
- Android(java)学习笔记108:通过反射获取私有构造方法并且使用
- Java使用反射调用方法
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- Java学习笔记2:当构造方法有多个参数时考虑使用Builder
- Java学习笔记11:在公共类中使用访问方法而非公有域
- java笔记(6) --反射中的方法调用
- 1.JAVA中使用JNI调用C++代码学习笔记
- JNI学习笔记:(1)开篇(2)本地代码访问Java代码 (3)本地方法取得Java属性/调用java方法 (4)本地代码创建Java对象(包括javaString) (5) 本地方法处理java数组
- Java学习笔记2:当构造方法有多个参数时考虑使用Builder
- java反射调用配置文件构造类对象,使用其方法
- Java学习笔记27:模板Velocity使用方法
- JNI学习笔记3——本地方法取得Java属性/调用java方法
- java学习笔记---Java中批处理SQL的使用方法(JDBC)
- Boost asio学习笔记之一—— 使用strand支持多线程调用service_io的方法
- 【Java使用反射调用方法】
- Java学习笔记——子类调用父类属性方法