実装バーを備えたインターフェイス Foo があります。インターフェイス Foo には、メソッド アノテーション @Secured を持つメソッド「doMe()」があります。これは、保護されている唯一の方法です。
ここで、クラスを調べて @Secured を含むメソッドを探す次のコードを書きました。(このメソッドはまだ完成していません。最初の単体テストを通過させようとしています。)
/**
* Determine if a method is secured
* @param method the method being checked
* @return true if the method is secured, false otherwise
*/
protected static boolean isSecured(Method method) {
boolean secured = false;
Annotation[] annotations = method.getAnnotations();
for(Annotation annotation:annotations){
if(Secured.class.equals(annotation.getClass())){
secured = true;
break;
}
}
if(secured){
return true;
}
return secured;
}
doMe() 以外のメソッドは、Foo と Bar の両方の getAnnotations() で 0 メンバーを返します。問題は、doMe() が Foo と Bar の両方に対して 0 メンバーを返すことです。
私よりもリフレクションについて詳しい人を探しています。見つけるのは難しくないはずです。:)
ありがとう。