/* from NowJava.com*/
//package com.nowjava;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class Main {
public static void main(String[] argv) throws Exception {
Class clazz = String.class;
Class annotationClass = String.class;
boolean recursively = true;
System.out.println(java.util.Arrays
.toString(getAnnotatedDeclaredFields(clazz,
annotationClass, recursively)));
}
/**
* Retrieving fields list of specified class and which
* are annotated by incoming annotation class
* If recursively is true, retrieving fields from all class hierarchy
*
* @param clazz - where fields are searching
* @param annotationClass - specified annotation class
* @param recursively param
* @return list of annotated fields
*///from N o w J a v a . c o m - 时代Java
public static Field[] getAnnotatedDeclaredFields(Class clazz,
Class<? extends Annotation> annotationClass, boolean recursively) {
Field[] allFields = getDeclaredFields(clazz, recursively);
List<Field> annotatedFields = new LinkedList<Field>();
for (Field field : allFields) {
if (field.isAnnotationPresent(annotationClass))
annotatedFields.add(field);
}
return annotatedFields.toArray(new Field[annotatedFields.size()]);
}
/**
* Retrieving fields list of specified class
* If recursively is true, retrieving fields from all class hierarchy
*
* @param clazz where fields are searching
* @param recursively param
* @return list of fields
*/
public static Field[] getDeclaredFields(Class clazz, boolean recursively) {
List<Field> fields = new LinkedList<Field>();
Field[] declaredFields = clazz.getDeclaredFields();
Collections.addAll(fields, declaredFields);
/**代码未完, 请加载全部代码(NowJava.com).**/
本文系作者在时代Java发表,未经许可,不得转载。如有侵权,请联系nowjava@qq.com删除。