主页

本篇文章介绍的是可以通过类、方法和参数自动找到指定的方法,不用自己写匹配函数去寻找指定的重载函数。

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();


版权属于:WANYL
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
0

目录

来自 《java 反射注入动态匹配重载方法的捷径》
评论

WANYL

博主很懒,啥都没有
123 文章数
0 评论量
11 分类数
124 页面数
已在风雨中度过 3年289天14小时42分