/* package whatever; // don't place package name! */
import java.lang.reflect.*;
import java.util.*;
import java.util.stream.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone {
static String simpleTypeName
(Type t
) { if (t instanceof ParameterizedType) {
ParameterizedType p = (ParameterizedType) t;
return simpleTypeName(p.getRawType())
+ Stream.of(p.getActualTypeArguments())
.map(Ideone::simpleTypeName)
.collect(Collectors.joining(", ", "<", ">"));
} else if (t instanceof Class) {
Class<?> c = (Class<?>) t;
return c.getSimpleName();
} else {
throw new AssertionError();
}
}
static List<String> list() {
throw new AssertionError();
}
Method m
= Ideone.
class.
getDeclaredMethod("list"); System.
out.
println(simpleTypeName
(m.
getGenericReturnType())); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lio7CmltcG9ydCBqYXZhLnV0aWwuKjsKaW1wb3J0IGphdmEudXRpbC5zdHJlYW0uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUgewogIHN0YXRpYyBTdHJpbmcgc2ltcGxlVHlwZU5hbWUoVHlwZSB0KSB7CiAgICBpZiAodCBpbnN0YW5jZW9mIFBhcmFtZXRlcml6ZWRUeXBlKSB7CiAgICAgIFBhcmFtZXRlcml6ZWRUeXBlIHAgPSAoUGFyYW1ldGVyaXplZFR5cGUpIHQ7CiAgICAgIHJldHVybiBzaW1wbGVUeXBlTmFtZShwLmdldFJhd1R5cGUoKSkKICAgICAgICAgICsgU3RyZWFtLm9mKHAuZ2V0QWN0dWFsVHlwZUFyZ3VtZW50cygpKQogICAgICAgICAgICAgIC5tYXAoSWRlb25lOjpzaW1wbGVUeXBlTmFtZSkKICAgICAgICAgICAgICAuY29sbGVjdChDb2xsZWN0b3JzLmpvaW5pbmcoIiwgIiwgIjwiLCAiPiIpKTsKICAgIH0gZWxzZSBpZiAodCBpbnN0YW5jZW9mIENsYXNzKSB7CiAgICAgIENsYXNzPD8+IGMgPSAoQ2xhc3M8Pz4pIHQ7CiAgICAgIHJldHVybiBjLmdldFNpbXBsZU5hbWUoKTsKICAgIH0gZWxzZSB7CiAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcigpOwogICAgfQogIH0KCiAgc3RhdGljIExpc3Q8U3RyaW5nPiBsaXN0KCkgewogICAgdGhyb3cgbmV3IEFzc2VydGlvbkVycm9yKCk7CiAgfQoKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbiB7CiAgICBNZXRob2QgbSA9IElkZW9uZS5jbGFzcy5nZXREZWNsYXJlZE1ldGhvZCgibGlzdCIpOwogICAgU3lzdGVtLm91dC5wcmludGxuKHNpbXBsZVR5cGVOYW1lKG0uZ2V0R2VuZXJpY1JldHVyblR5cGUoKSkpOwogIH0KfQo=