• Java Reflection(五):方法


    转载自并发编程网 – ifeve.com

    内容索引
    获取Method对象
    方法参数以及返回类型
    通过Method对象调用方法

    使用Java反射你可以在运行期检查一个方法的信息以及在运行期调用这个方法,通过使用java.lang.reflect.Method类就可以实现上述功能。在本节会带你深入了解Method对象的信息。

    获取Method对象

    可以通过Class对象获取Method对象,如下例:

       Class aClass = ...//获取Class对象
       Method[] methods = aClass.getMethods();
    

    返回的Method对象数组包含了指定类中声明为公有的(public)的所有变量集合。
    如果你知道你要调用方法的具体参数类型,你就可以直接通过参数类型来获取指定的方法,下面这个例子中返回方法对象名称是“doSomething”,他的方法参数是String类型:

       Class  aClass = ...//获取Class对象
       Method method = aClass.getMethod("doSomething", new Class[]{String.class});
    

    如果根据给定的方法名称以及参数类型无法匹配到相应的方法,则会抛出NoSuchMethodException。
    如果你想要获取的方法没有参数,那么在调用getMethod()方法时第二个参数传入null即可,就像这样:

       Class  aClass = ...//获取Class对象
       Method method = aClass.getMethod("doSomething", null);
    

    方法参数以及返回类型

    你可以获取指定方法的方法参数是哪些:

       Method method = ... //获取Class对象
       Class[] parameterTypes = method.getParameterTypes();
    

    你可以获取指定方法的返回类型:

       Method method = ... //获取Class对象
       Class returnType = method.getReturnType();
    

    通过Method对象调用方法

    你可以通过如下方式来调用一个方法:

       //获取一个方法名为doSomesthing,参数类型为String的方法
       Method method = MyObject.class.getMethod("doSomething", String.class);
       Object returnValue = method.invoke(null, "parameter-value1");
    

    传入的null参数是你要调用方法的对象,如果是一个静态方法调用的话则可以用null代替指定对象作为invoke()的参数,在上面这个例子中,如果doSomething不是静态方法的话,你就要传入有效的MyObject实例而不是null。
    Method.invoke(Object target, Object … parameters)方法的第二个参数是一个可变参数列表,但是你必须要传入与你要调用方法的形参一一对应的实参。就像上个例子那样,方法需要String类型的参数,那我们必须要传入一个字符串。

    原文地址 作者: Jakob Jenkov 译者:叶文海(yewenhai@gamil.com)

  • 相关阅读:
    AS2 tween缓动
    flash 绑定 swc类文件
    jsfl自运行与被调运行
    一键清除fla文件中的TLF文本
    as 2的 Event.REMOVED_FROM_STAGE
    jsfl 添加代码
    jsfl 删除库指定内容
    文件上传待研究
    SpringMVC单文件上传、多文件上传、文件列表显示、文件下载
    shiro配置参考(二)可以和mybatis的配置放在一个文件中(不建议这样,可以拆分开来,注意相关配置即可)
  • 原文地址:https://www.cnblogs.com/rmsSpring/p/4615447.html
Copyright © 2020-2023  润新知