一個例子類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
?
該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;
}
謝謝................ – Anu
您可以在運行時使用反射。
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());
}
}
}
}
編輯:爲了在開發時間/設計時間這樣做,你可以使用的方法描述here。
另一種簡單的解決方案JDT採用AST DOM可以如下:
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
節點。
真的有必要使用'org.eclipse.jdt.core.IAnnotation'嗎? –
只是爲了澄清,你是否正在創建一個使用JDT片斷的eclipse插件? –
沒有必要使用org.eclipse.jdt.core.IAnnotation。 – Anu