package org.etk.reflect.api.metadata;
import java.lang.annotation.Annotation;
import java.util.Collection;
import java.util.List;
/**
* Define the AnnotationMetadata interface help to resolve the annotation.
*
* @author thanh_vucong
*
* @param <T>
* @param <E>
* @param <A>
* @param <P>
*/
public interface AnnotationMetadata<T, E, A, P> {
<A extends Annotation> A resolveDeclaredAnnotation(E element, Class<A> annotationClass);
Collection<A> getDeclaredAnnotation(E element);
Collection<P> getAnnotationParameters(A annotation);
T getAnnotationType(A a);
String getAnnotationParameterName(P parameter);
T getAnnotationParameterType(P parameter);
List<?> getAnnotationParameterValue(A annotation, P parameter);
}