public static <A extends Annotation> A getInheritedParameterAnnotation(
            Class<A> annotationClass, Method method, Parameter annotatedParameter) {
        A annotation = annotatedParameter.getAnnotation(annotationClass);
        if (annotation == null) {
            int paramNumber;
            for (paramNumber = 0; paramNumber < method.getParameterCount(); paramNumber++) {
                if (method.getParameters()[paramNumber].equals(annotatedParameter)) {
                    break; //This is the correct parameter
                }
            }
            annotation = getOverriddenAnnotation(annotationClass, Optional.of(method), OptionalInt.of(paramNumber));
        }

        return annotation;
    }
Class that finds annotations on superclasses/interfaces of supplied instance.
<p>
Credit for initial implementation goes to the author of this answer on Stack Overflow: https://stackoverflow.com/a/17281097
stroom-event-logging-rs/stroom-event-logging-rs-impl/src/main/java/stroom/event/logging/rs/impl/AnnotationUtil.java