当前位置: 首页 > 工具软件 > Invoke > 使用案例 >

Java中的invoke()方法

和季
2023-12-01

invoke(Object obj, Object… args):

invoke()就是调用类中的方法,第一个参数是obj(对象),在我们平常使用过程中用到的是类,类是对象的一个集合,第二个参数是args(参数),是调用invoke这个方法所使用的参数,我们使用是一般是类中的方法(method),因此invoke方法我们也可以这样理解:invoke(class,method),相当于把类中的方法参数化了。

比如Test类里有一系列名字相似的方法setValue1、setValue2等等。可以把方法名存进数组v[],然后循环里invoke(test,v[i]),就顺序调用了全部setValue。

参数:1)Obj–从中调用基础方法的对象

​ 2)Args:用于方法调用使用的参数

返回:在参数为args的obj上调度此对象表示的方法的结果

  public Object invoke(Object obj, Object... args)
  //IllegalAccessException:如果这个Method对象强制Java语言访问控制,并且底层方法不可访问
  //IllegalArgumentException:如果方法是一个实例方法,而指定的对象参数不是声明底层方法的类或接口的实例
        throws IllegalAccessException, IllegalArgumentException,
           InvocationTargetException  //底层方法抛出异常
    {
        if (!override) {
            if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
                Class<?> caller = Reflection.getCallerClass();
                checkAccess(caller, clazz, obj, modifiers);
            }
        }
        MethodAccessor ma = methodAccessor;             // read volatile
        if (ma == null) {
            ma = acquireMethodAccessor();
        }
        return ma.invoke(obj, args);
        }
 类似资料: