/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.Annotation;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Class<?> clazz = MySecondInterface.class;
Retriable annotation = clazz.getAnnotation(Retriable.class);
System.
out.
println("Retriable annotation: " + annotation
);
Annotation[] annotations
= clazz.
getAnnotations(); System.
out.
println("Annotations: " + Arrays.
toString(annotations
));
annotations = clazz.getDeclaredAnnotations();
System.
out.
println("Declared Annotations: " + Arrays.
toString(annotations
)); }
}
@Retriable
interface MyInterface {
public void myMethod();
}
interface MySecondInterface extends MyInterface {
}
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface Retriable {
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZTsKaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLkluaGVyaXRlZDsKaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvbjsKaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeTsKaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLlRhcmdldDsKaW1wb3J0IGphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb247CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCUNsYXNzPD8+IGNsYXp6ID0gTXlTZWNvbmRJbnRlcmZhY2UuY2xhc3M7CgkJCgkJUmV0cmlhYmxlIGFubm90YXRpb24gPSBjbGF6ei5nZXRBbm5vdGF0aW9uKFJldHJpYWJsZS5jbGFzcyk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJSZXRyaWFibGUgYW5ub3RhdGlvbjogIiArIGFubm90YXRpb24pOwoJCQoJCUFubm90YXRpb25bXSBhbm5vdGF0aW9ucyA9IGNsYXp6LmdldEFubm90YXRpb25zKCk7CgkJU3lzdGVtLm91dC5wcmludGxuKCJBbm5vdGF0aW9uczogIiArIEFycmF5cy50b1N0cmluZyhhbm5vdGF0aW9ucykpOwoJCQoJCWFubm90YXRpb25zID0gY2xhenouZ2V0RGVjbGFyZWRBbm5vdGF0aW9ucygpOwoJCVN5c3RlbS5vdXQucHJpbnRsbigiRGVjbGFyZWQgQW5ub3RhdGlvbnM6ICIgKyBBcnJheXMudG9TdHJpbmcoYW5ub3RhdGlvbnMpKTsKCX0KCn0KCkBSZXRyaWFibGUKaW50ZXJmYWNlIE15SW50ZXJmYWNlIHsKCXB1YmxpYyB2b2lkIG15TWV0aG9kKCk7Cn0KCmludGVyZmFjZSBNeVNlY29uZEludGVyZmFjZSBleHRlbmRzIE15SW50ZXJmYWNlIHsKCQp9CgoKCkBJbmhlcml0ZWQKQFJldGVudGlvbihSZXRlbnRpb25Qb2xpY3kuUlVOVElNRSkKQFRhcmdldChFbGVtZW50VHlwZS5UWVBFKQpAaW50ZXJmYWNlIFJldHJpYWJsZSB7CgkKfQ==