たとえば、クラスにExam
はアノテーションを持ついくつかのメソッドがあります。
@Override
public void add() {
int c=12;
}
@Override
アノテーションを使用してメソッド名(追加)を取得するにはどうすればよいorg.eclipse.jdt.core.IAnnotation
ですか?
たとえば、クラスにExam
はアノテーションを持ついくつかのメソッドがあります。
@Override
public void add() {
int c=12;
}
@Override
アノテーションを使用してメソッド名(追加)を取得するにはどうすればよいorg.eclipse.jdt.core.IAnnotation
ですか?
リフレクションを使用して、実行時にこれを行うことができます。
public class FindOverrides {
public static void main(String[] args) throws Exception {
for (Method m : Exam.class.getMethods()) {
if (m.isAnnotationPresent(Override.class)) {
System.out.println(m.toString());
}
}
}
}
編集:開発時/設計時にこれを行うには、ここで説明する方法を使用できます。
IAnnotationは非常に誤解を招く可能性があります。ドキュメントを参照してください。
アノテーションのあるクラスからメソッドを取得します。これを行うには、すべてのメソッドを反復処理し、そのようなアノテーションを持つメソッドのみを生成する必要があります。
public static Collection<Method> methodWithAnnotation(Class<?> classType, Class<? extends Annotation> annotationClass) {
if(classType == null) throw new NullPointerException("classType must not be null");
if(annotationClass== null) throw new NullPointerException("annotationClass must not be null");
Collection<Method> result = new ArrayList<Method>();
for(Method method : classType.getMethods()) {
if(method.isAnnotationPresent(annotationClass)) {
result.add(method);
}
}
return result;
}
AST DOMを使用する別の単純なJDTソリューションは、次のようになります。
public boolean visit(SingleMemberAnnotation annotation) {
if (annotation.getParent() instanceof MethodDeclaration) {
// This is an annotation on a method
// Add this method declaration to some list
}
}
NormalAnnotation
また、ノードにアクセスする必要がありますMarkerAnnotation
。