/* package whatever; // don't place package name! */
import java.lang.annotation.*;
import java.lang.reflect.Method;
class MyTest
{
public static void main
(String[] args
) {
for (final Method method
: MyClass.
class.
getDeclaredMethods()) {
if (method.getAnnotation(MyAnnotation.class) != null)
{
System.
out.
println(String.
format("@MyAnnotation %s.%s", method.
getDeclaringClass().
getSimpleName(), method.
getName())); }
}
}
}
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface MyAnnotation
{
}
interface MyGenericInterface<T>
{
void hello(T there);
}
class MyClass implements MyGenericInterface<String>
{
@MyAnnotation
@Override
public void hello
(String there
) {
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLio7CmltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5NZXRob2Q7CgpjbGFzcyBNeVRlc3QKewogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpCiAgewogICAgZm9yIChmaW5hbCBNZXRob2QgbWV0aG9kIDogTXlDbGFzcy5jbGFzcy5nZXREZWNsYXJlZE1ldGhvZHMoKSkKICAgIHsKICAgICAgaWYgKG1ldGhvZC5nZXRBbm5vdGF0aW9uKE15QW5ub3RhdGlvbi5jbGFzcykgIT0gbnVsbCkKICAgICAgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihTdHJpbmcuZm9ybWF0KCJATXlBbm5vdGF0aW9uICVzLiVzIiwgbWV0aG9kLmdldERlY2xhcmluZ0NsYXNzKCkuZ2V0U2ltcGxlTmFtZSgpLCBtZXRob2QuZ2V0TmFtZSgpKSk7CiAgICAgIH0KICAgIH0KICB9Cn0KCkBEb2N1bWVudGVkCkBJbmhlcml0ZWQKQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuUlVOVElNRSkKQFRhcmdldChFbGVtZW50VHlwZS5NRVRIT0QpCkBpbnRlcmZhY2UgTXlBbm5vdGF0aW9uCnsKfQoKaW50ZXJmYWNlIE15R2VuZXJpY0ludGVyZmFjZTxUPgp7CiAgdm9pZCBoZWxsbyhUIHRoZXJlKTsKfQoKY2xhc3MgTXlDbGFzcyBpbXBsZW1lbnRzIE15R2VuZXJpY0ludGVyZmFjZTxTdHJpbmc+CnsKICBATXlBbm5vdGF0aW9uCiAgQE92ZXJyaWRlCiAgcHVibGljIHZvaWQgaGVsbG8oU3RyaW5nIHRoZXJlKQogIHsKICB9Cn0K