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. **面向接口编程之制定标准和简单工厂模式** - 面向接口编程强调编程时依赖于抽象而不是具体实现。 - 简单工厂模式提供...
《道路车辆窄带辐射电磁能电干扰的部件试验方法第9部分:便携式发射机》是ISO 11452系列标准中的一个重要组成部分,该标准主要关注于汽车电子设备在遭受电磁干扰时的性能评估。这个标准的2021年版本,即ISO 11452-9-...
1. 现有市场信息:通过市场调研了解当前物资的价格、供应情况、市场趋势等,帮助企业制定采购策略。 2. 同行信息:通过与其他同行业企业交流,获取物资的采购经验、供应商评价等,有助于识别优质供应商。 3. 供货商...
- 继承是指一个类可以继承另一个类的属性和方法,实现代码的复用。 11. **子类访问父类和方法覆写** - 子类可以通过super关键字访问父类的成员。 - 方法覆写是指子类重新定义父类的方法。 12. **super关键字和...
综上所述,《接触网跳闸原因分析查找》文档为电力系统的维护人员提供了全面的故障诊断与分析方法,涉及了故障性质的判断、天气和温度影响、不同跳闸情况的分析以及特殊情况下参数的识别等多个方面。通过应用这些专业...
关键词的书写原则强调相关性、专指性和检索性,即所选关键词应与报告内容紧密相关,能够准确反映报告的专业领域,便于在文献检索中被查找到。 湖南文理学院提供的电子设计方法及报告写作知识点,旨在指导学生如何...
- 在确定了加工方法后,工艺人员会查找合适的机床设备、选择适当的切削工具和刀具参数,同时计算工装和工时定额。 2. **CAPP系统的构建**: - 将零件特征信息数字化并输入计算机,建立零件信息数据库,便于计算机...
这通常指的是通过某种方法或工具来检查磁盘中文件的使用情况,例如文件的访问频率、读写次数、占用空间大小以及文件类型分布等信息。这种检查对于优化存储空间、改善文件管理、提升系统性能以及维护数据安全都具有...
方法中的属性指的是方法参数和方法体内的局部变量。 ##### 4. 方法特点 - 可以重用代码。 - 提高程序的可维护性和可读性。 ##### 5. 方法的重载(Overload) 在同一类中,允许存在一个以上的同名方法,只要它们...