package pl.net.bluesoft.rnd.pt.utils.jdbc.helper; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.List; public class Classes { public static <A extends Annotation> A getClassAnnotation(Class clazz, Class<A> annotation) { while (clazz != null && Object.class != clazz) { if (clazz.isAnnotationPresent(annotation)) { return (A) clazz.getAnnotation(annotation); } clazz = clazz.getSuperclass(); } return null; } public static <A extends Annotation> java.lang.reflect.Field getFieldWithAnnotation(Class clazz, Class<A> annotation) { List<Field> fields = new LinkedList<Field>(Arrays.asList(clazz.getDeclaredFields())); for (Iterator<Field> it = fields.iterator(); it.hasNext(); ) { java.lang.reflect.Field field = it.next(); if (field.isAnnotationPresent(annotation)) { return field; } } if (clazz.getSuperclass() != null && !clazz.getSuperclass().equals(Object.class)) { return getFieldWithAnnotation(clazz.getSuperclass(), annotation); } return null; } }