通过反射调用类里面的方法
来源:互联网 发布:甘霖 配餐软件 编辑:程序博客网 时间:2024/05/02 04:28
一般我们调用类的方法,都会直接new一个类的对象,并通过X . XXX()形式进行调用,下面通过反射的方式,用类的类类型进行反射调用该类的方法。
步骤:一、获取类的类类型
二、通过类类型的getMethod(name, parameterTypes)方法进行获取相应的方法
三、最后通过invoke(obj, args...)进行方法调用
新建MethodReflect.java
package com.imooc.io;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;public class MethodReflect {public static void main(String[] args){A a = new A();//获取类的类类型Class c = a.getClass();try {/* getMethod获取的是public的方法 * getDelcaredMethod自己声明的方法 * getMethod()方法获取方法,参数第一个是函数名称, * 后面函数是参数(class对象),如没可以不写 *///Method m1 = c.getMethod("print",new Class[]{int.class,int.class});Method m1 = c.getMethod("print",int.class,int.class);//Method m2 = c.getMethod("print", new Class[]{String.class,String.class});Method m2 = c.getMethod("print", String.class,String.class);//Method m3 = c.getMethod("print",new Class[]{});Method m3 = c.getMethod("print"); /* * Metho对象的invoke方法效果相当于A的对象a去调用方法 * 第一个参数要操作的对象,后面是一个Object的对象,没有可以不填 * 方法如果没有返回值返回null,有返回值返回具体的返回值 */ //m1.invoke(a,new Object[]{10,20})m1.invoke(a,10,20);//m2.invoke(a,new Object[]{"abc","ABC"});m2.invoke(a,"abc","ABC");//m3.invoke(a,new Object[]{})m3.invoke(a);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (SecurityException e) {e.printStackTrace();}catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (InvocationTargetException e) {// TODO Auto-generated catch blocke.printStackTrace();}}public static class A{public void print(){System.out.println("hello");}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());}}}
运行结果:
30
ABCabc
hello
0 0
- 通过反射调用类里面的方法
- 通过反射调用类内部的方法
- 反射第四步 : 通过反射获取某一个类的 方法 并通过反射调用
- 通过bindService调用服务里面的方法
- 通过JAVA的反射调用类中的公有私有方法
- java通过反射调用类的private方法.
- java 通过反射获得类的属性和调用方法
- 通过反射机制调用某个类的方法
- 如何通过反射调用对象的方法?
- 如何通过反射来调用类方法
- 通过反射调用类中的方法
- 通过反射调用类中的方法
- 通过反射调用其他类中的方法
- 如何通过Java反射访问类里面的私有方法和变量
- iOS — 通过自定义framework,在调用的时候,里面的类扩展方法不能调用
- 如何通过反射调用方法?
- 通过Java反射调用方法
- 通过Java反射调用方法
- VIJOS 1114 FBI树
- 第十六章 Vim之Global命令
- Android L 预置apk
- Linux内核增加自己的配置项 错误
- test5.20
- 通过反射调用类里面的方法
- iOS微信安装包瘦身
- linux 中的iostat命令监控IO
- Error: Invalid resource directory name
- Android samples API Demos之UI篇1(ActionBarCompat-Styled)
- java复习
- 本人开通博客的目的
- Mobile application monitoring (Splunk MINT)
- Node.js Cluster多进程负载测试