114 Star 440 Fork 119

JFinal / enjoy

 / 详情

【建议】MethodKit中addExtensionMethod方法某合法性判定

已完成
创建于  
2020-09-17 08:54

addExtensionMethod中
以下为原代码:

// Extension method 第一个参数必须与当前对象的类型一致,在调用时会将当前对象自身传给扩展方法的第一个参数
if (targetClass != extensionMethodParaTypes[0]) {
	throw new RuntimeException(buildMethodSignatureForException("The first argument type of : " + extensionClass.getName() + ".", methodName, extensionMethodParaTypes) + " must be: " + targetClass.getName());
}

可否改为以下条件判定:

if (!extensionMethodParaTypes[0].isAssignableFrom(targetClass)) {
	throw new RuntimeException(buildMethodSignatureForException("The first argument type of : " + extensionClass.getName() + ".", methodName, extensionMethodParaTypes) + " must be: " + targetClass.getName());
}

例如对应java.lang.Number的子类进行方法拓展,这样判定只要写一个拓展类就行了

class NumberExt {
    public String format(Number target, String pattern){
       //do something
    }
}

评论 (2)

约黄昏 创建了任务
约黄昏 关联仓库设置为JFinal/enjoy
约黄昏 修改了描述
展开全部操作日志

如果能实现功能这个建议是很好的,我记得做了你建议的改进以后应该是实现不了你希望的功能的

希望你在本地能试用一下你建议的功能,如果可以的话,引入到下一版本,谢谢

国庆长假清理需求、反馈开发列表,该需求已被支持:

https://gitee.com/jfinal/jfinal/commit/a791f993512543731354ba1b2365d38a04ab1792

JFinal 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
840 jfinal 1580661334
Java
1
https://gitee.com/jfinal/enjoy.git
git@gitee.com:jfinal/enjoy.git
jfinal
enjoy
enjoy

搜索帮助