protected Method findMatchingMethod() {
String targetMethod = getTargetMethod();
Object[] arguments = getArguments();
int argCount = arguments.length;
Method[] candidates = ReflectionUtils.getAllDeclaredMethods(getTargetClass());
int minTypeDiffWeight = Integer.MAX_VALUE;
Method matchingMethod = null;
for (Method candidate : candidates) {
if (candidate.getName().equals(targetMethod)) {
Class[] paramTypes = candidate.getParameterTypes();
if (paramTypes.length == argCount) {
int typeDiffWeight = getTypeDifferenceWeight(paramTypes, arguments);
if (typeDiffWeight < minTypeDiffWeight) {
minTypeDiffWeight = typeDiffWeight;
matchingMethod = candidate;
}
}
}
}
return matchingMethod;
}
public static int getTypeDifferenceWeight(Class[] paramTypes, Object[] args) {
int result = 0;
for (int i = 0; i < paramTypes.length; i++) {
if (!ClassUtils.isAssignableValue(paramTypes[i], args[i])) {
return Integer.MAX_VALUE;
}
if (args[i] != null) {
Class paramType = paramTypes[i];
Class superClass = args[i].getClass().getSuperclass();
while (superClass != null) {
if (paramType.equals(superClass)) {
result = result + 2;
superClass = null;
}
else if (ClassUtils.isAssignable(paramType, superClass)) {
result = result + 2;
superClass = superClass.getSuperclass();
}
else {
superClass = null;
}
}
if (paramType.isInterface()) {
result = result + 1;
}
}
}
return result;
}
相关推荐
在Emgu CV中,这些滤波器可以通过`Image`类提供的方法来调用,例如`MedianBlur`、`AverageBlur`、`GaussianBlur`、`BilateralFilter`、`BoxFilter`等。使用时需要指定滤波器的大小和参数,以达到预期效果。 接下来...
电气故障的查找与检修是电气工程领域中一项重要的技术任务,涉及到设备的正常运行和生产安全。本资料详细介绍了电气故障检修的一般步骤和实用技巧,旨在帮助技术人员更有效地定位和解决问题。 首先,查找电气故障的...
国际农药分析协作委员会(CI PAC)制定的方法被认为是全球农药分析的标准,被联合国粮农组织和世界卫生组织广泛采纳。CI PAC的手册K卷涵盖了2000年至2002年间19种农药的有效成分及其50多种原药和制剂的分析方法,...
描述中的".zip"表明这是一个压缩文件,其中包含了详细资料——"一种基于共享数据平台的数据处理方法.pdf",这份文档很可能是详细的技术指南或者研究报告,阐述了具体的实施步骤和策略。 共享数据平台是现代企业数据...
在网络安全态势评估方法中,布谷鸟搜索算法被用来优化BP神经网络,具体步骤包括:首先根据态势输入指标和输出态势值确定BP神经网络的输入输出节点数,然后计算出隐含层节点数,接着随机初始化网络参数,利用布谷鸟...
气溶胶反演是遥感领域中的一个重要环节,它涉及到对大气中悬浮微粒——气溶胶的浓度、类型和光学特性等参数的估算。ENVI(Environment for Visualizing Images)是一个广泛使用的遥感图像处理软件,而IDL...
此外,根据`$strict`参数的不同设置,你可以更加精确地控制查找过程中的类型匹配要求,从而避免潜在的类型混淆问题。 最后,值得注意的是,`array_search`和`in_array`函数在性能上的差异主要取决于数组的大小和...
例如,在一维数组[21,46,24,99,57,77,86]中,查找数据元素99,首先从第1个元素21开始进行比较,比较结果与要查找的数据不相等,接着与第2个元素46进行比较,以此类推,当进行到与第4个元素比较时,它们相等,...
在"route-master"这个项目中,我们可以假设它包含了一个路由引擎,该引擎能解析URL并自动映射到对应的控制器类和方法。通常,路由引擎会分析URL路径,提取出控制器名、方法名以及可能的参数。例如,URL "site....
- 类通过实现接口来提供接口所定义的行为。 - 接口间可以通过extends关键字进行扩展。 13. **面向接口编程之制定标准和简单工厂模式** - 面向接口编程强调编程时依赖于抽象而不是具体实现。 - 简单工厂模式提供...
1. 现有市场信息:通过市场调研了解当前物资的价格、供应情况、市场趋势等,帮助企业制定采购策略。 2. 同行信息:通过与其他同行业企业交流,获取物资的采购经验、供应商评价等,有助于识别优质供应商。 3. 供货商...
- 继承是指一个类可以继承另一个类的属性和方法,实现代码的复用。 11. **子类访问父类和方法覆写** - 子类可以通过super关键字访问父类的成员。 - 方法覆写是指子类重新定义父类的方法。 12. **super关键字和...
- 在确定了加工方法后,工艺人员会查找合适的机床设备、选择适当的切削工具和刀具参数,同时计算工装和工时定额。 2. **CAPP系统的构建**: - 将零件特征信息数字化并输入计算机,建立零件信息数据库,便于计算机...
《道路车辆窄带辐射电磁能电干扰的部件试验方法第9部分:便携式发射机》是ISO 11452系列标准中的一个重要组成部分,该标准主要关注于汽车电子设备在遭受电磁干扰时的性能评估。这个标准的2021年版本,即ISO 11452-9-...
方法中的属性指的是方法参数和方法体内的局部变量。 ##### 4. 方法特点 - 可以重用代码。 - 提高程序的可维护性和可读性。 ##### 5. 方法的重载(Overload) 在同一类中,允许存在一个以上的同名方法,只要它们...
3. **故障检测方法**:学习使用万用表、兆欧表等工具进行电气参数测量,判断故障点,以及如何通过电气图进行故障分析。 4. **安全操作规程**:理解并遵循电气作业的安全规定,如停电操作、佩戴绝缘防护装备、使用...
D、abstract 方法必须在 abstract 类中声明,但 abstract 类定义中可以没有 abstract 方法。 Java 语言程序设计中,abstract 类是一个抽象类,它只能用来派生子类,不能用来创立 abstract 类的对象。abstract 类中...
【标题】"成都VIIRS传感器气溶胶反演查找表"是针对成都地区的一个特定数据集,用于分析...通过分析这些数据,可以揭示气溶胶对环境、气候和人类健康的影响,为政策制定者提供科学依据,以改善空气质量并应对气候变化。
在Excel这个广泛使用的电子表格工具中,ChatGPT可以作为一个强大的辅助工具,帮助用户在数据处理、分析和决策制定上提高效率。本文将详细介绍ChatGPT在Excel中的几种使用方法。 1. 自定义函数和公式:ChatGPT可以...