這工作得很好濾除方法與Analyze
註釋:Java反射:帶註釋的方法數量?
for (Method m : ParseTree.class.getMethods()) {
if (m.isAnnotationPresent(Analyze.class)) {
如果我只想計數,而無需通過循環呢?是否有某種方法可以返回某個類中有多少方法具有特定的註釋?
這工作得很好濾除方法與Analyze
註釋:Java反射:帶註釋的方法數量?
for (Method m : ParseTree.class.getMethods()) {
if (m.isAnnotationPresent(Analyze.class)) {
如果我只想計數,而無需通過循環呢?是否有某種方法可以返回某個類中有多少方法具有特定的註釋?
這是一個非常特殊的用例,所以我真的懷疑,Java反射API中有一個方法。
但即使有這樣的方法,它也會這樣做:遍歷類的所有方法,計算註釋並報告數量。
我建議你在這個任務的一些實用工具類中實現一個靜態方法。
public static int countAnnotationsInClass(Class<?> testClass, Class<?> annotation) {
// ...
}
具有運行時保留(即可通過反射獲得的那些)的Java註釋只能從存在註釋的元素直接訪問。所以你將不得不循環遍歷這些方法並檢查你的例子中的註釋。
如果您需要在類級別做了很多註釋處理的,我建議你創建一個實用工具類,做的是:
public class AnnotationUtils {
public static int countMethodsWithAnnotation(Class<?> klass,
Class<?> annotation) {
int count = 0;
for (Method m : klass.getMethods()) {
if (m.isAnnotationPresent(annotation)) {
count++;
}
}
return count;
}
// Other methods for custom annotation processing
}
然後,您可以使用實用工具類,讓你在需要的信息一種方法調用,因爲您需要在其餘代碼中:
int count = AnnotationUtils.countMethodsWithAnnotation(ParseTree.class,
Analyze.class);
是的,真正的問題是:爲什麼? – 2009-12-02 16:29:05