/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.lang.annotation.*;
import java.lang.reflect.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
scan(new X());
}
if (o == null) return;
for (Field field
: o.
getClass().
getDeclaredFields()) { if (field.getAnnotation(MyAnn.class) != null) {
System.
out.
println(field.
get(o
)); }
if (!field.getType().isPrimitive()) {
scan(field.get(o));
}
}
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@interface MyAnn {
}
class X {
// A custom annotation on `x`.
@MyAnn
int x = 0;
Y y = new Y();
}
class Y {
@MyAnn
int y = 1;
// ...
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmxhbmcuYW5ub3RhdGlvbi4qOwppbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuKjsKaW1wb3J0IGphdmEuaW8uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJc2NhbihuZXcgWCgpKTsKCX0KCQoJcHJpdmF0ZSBzdGF0aWMgdm9pZCBzY2FuKE9iamVjdCBvKSB0aHJvd3MgSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiB7CgkJaWYgKG8gPT0gbnVsbCkgcmV0dXJuOwoJCQoJCWZvciAoRmllbGQgZmllbGQgOiBvLmdldENsYXNzKCkuZ2V0RGVjbGFyZWRGaWVsZHMoKSkgewoJCQlpZiAoZmllbGQuZ2V0QW5ub3RhdGlvbihNeUFubi5jbGFzcykgIT0gbnVsbCkgewoJCQkJU3lzdGVtLm91dC5wcmludGxuKGZpZWxkLmdldChvKSk7CgkJCX0KCQkJaWYgKCFmaWVsZC5nZXRUeXBlKCkuaXNQcmltaXRpdmUoKSkgewoJCQkJc2NhbihmaWVsZC5nZXQobykpOwoJCQl9CgkJfQoJfQp9CgpAUmV0ZW50aW9uKFJldGVudGlvblBvbGljeS5SVU5USU1FKQpAVGFyZ2V0KHtFbGVtZW50VHlwZS5GSUVMRH0pCkBpbnRlcmZhY2UgTXlBbm4gewoJCn0KCmNsYXNzIFggewogICAgLy8gQSBjdXN0b20gYW5ub3RhdGlvbiBvbiBgeGAuCiAgICBATXlBbm4KICAgIGludCB4ID0gMDsKCiAgICBZIHkgPSBuZXcgWSgpOwp9CgpjbGFzcyBZIHsKICAgIEBNeUFubgogICAgaW50IHkgPSAxOwoKICAgIC8vIC4uLgp9