サブクラスが実装する天気を効率的に検索しようとしています_szMethodName
. を実行することで、サブクラスが実装するすべてのメソッドの配列を取得できますMethod[] _arrClassMethodsList = class.getMethods();
。次に、メソッドの名前を探している関数の stringName と比較して、天気を判断するか、クラスがその特定のメソッドを実装していないかを判断します。現在、これは 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);
これを機能させる方法に関するヘルプや例は大歓迎です。ありがとう!