我正在尝试有效地搜索天气,子类实现了一个方法,我在一个名为_szMethodName
. 我可以通过做得到子类实现的所有方法的数组Method[] _arrClassMethodsList = class.getMethods();
。然后,我可以将该方法的名称与我正在寻找的函数的 stringName 进行比较,以确定天气或该类是否实现了该特定方法。目前我在 for 循环中工作,但随着子类的增长,这会变慢。
For循环实现:
for (Method method : class.getMethods()){
if(method.getName().equals(_szMethodName)){
//method exists in subclass
break;
}
}
来自的方法数组 (仅在 Java >=7 中)。我希望我可以通过在数组上使用二进制搜索或其他一些优化而不是使用 for 循环来利用这一点。但是,我还没有弄清楚如何在数组上实现 Java 的二进制搜索功能。我曾尝试使用比较器或比较器,但尚未成功。我最近的比较器实现如下,但有一些我还不能解决的错误。class.getMethods()
按字母顺序排序。
当前使用比较器的尝试:
Comparator<Method> c = new Comparator <Method>() {
public int compare(Method method, String string) {
return method.getName().compareTo(string);
}
};
Method[] _arrClassMethodsList = class.getMethods();
int index = Arrays.binarySearch(_arrClassMethodsList, _szMethodName, c);
任何有关如何使其工作的帮助或示例将不胜感激。谢谢!