本篇文章介绍的是可以通过类、方法和参数自动找到指定的方法,不用自己写匹配函数去寻找指定的重载函数。
java.beans.Expression 支持调用方法后拿到返回值。
java.beans.Statement 只支持调用方法,不支持拿到返回值。
Expression类介绍,Statement 同理。
public Statement(Object target,
String methodName,
Object[] arguments)
按照所给参数创建一个新的 Statement 对象,使其具有 target、methodName 和 arguments。
execute方法介绍【调用构造方法说明】
public void execute()
throws Exception
执行方法找到一个与 methodName 属性同名的方法,并在目标上调用该方法。 当目标的类使用给定名称定义大量方法时,该实现应该使用 Java Language Specification (15.11) 中指定的算法选择最明确的方法。目标和参数的动态类被用于替换编译时类型信息,与 java.lang.reflect.Method 类本身类似,基本值与相关包装器类之间的转换是内部处理的。
以下方法类型被作为特殊情况处理:
可以通过将类对象用作目标来调用静态方法。
使用保留的方法名 "new" 调用类的构造方法,如同所有类都定义了静态 "new" 方法。构造方法调用通常被认为是 Expression 而不是 Statement,因为它们返回一个值。
java.util.List 接口中定义的方法名称 "get" 和 "set" 也可以应用于数组实例,映射到 Array 类中的同一名称的静态方法。
抛出:
Exception
使用案例:
//实例化匹配器,由于调用的不是静态方法,所以需要实例化一个对象,如果是静态方法,只需要传入Main4_3.class就行。
Expression e = new Expression(new Main4_3(),"main2",new Object[]{new String[]{"abc"}})
//执行方法
e.execute();
//获取返回值
e,getValue();