import java.util.*;
import java.lang.*;
import java.lang.reflect.*;
public class Main
{
{
TestDto<Integer> a = new TestDto<Integer>();
TestDto<String> b = new TestDto<String>();
System.
out.
println(a.
getTypeParameter()); System.
out.
println(b.
getTypeParameter()); }
}
class TestDto<T> {
public Type getTypeParameter() {
return new TestDto<T>() {
public Type getTypeParameter() {
return ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
}.getTypeParameter();
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC4qOwoKcHVibGljIGNsYXNzIE1haW4KewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CiAgICAgICAgVGVzdER0bzxJbnRlZ2VyPiBhID0gbmV3IFRlc3REdG88SW50ZWdlcj4oKTsKICAgICAgICBUZXN0RHRvPFN0cmluZz4gYiA9IG5ldyBUZXN0RHRvPFN0cmluZz4oKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oYS5nZXRUeXBlUGFyYW1ldGVyKCkpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihiLmdldFR5cGVQYXJhbWV0ZXIoKSk7Cgl9Cn0KCmNsYXNzIFRlc3REdG88VD4gewogICAgcHVibGljIFR5cGUgZ2V0VHlwZVBhcmFtZXRlcigpIHsKICAgICAgICByZXR1cm4gbmV3IFRlc3REdG88VD4oKSB7CiAgICAgICAgICAgIHB1YmxpYyBUeXBlIGdldFR5cGVQYXJhbWV0ZXIoKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gKChQYXJhbWV0ZXJpemVkVHlwZSkgZ2V0Q2xhc3MoKS5nZXRHZW5lcmljU3VwZXJjbGFzcygpKS5nZXRBY3R1YWxUeXBlQXJndW1lbnRzKClbMF07CiAgICAgICAgICAgIH0KICAgICAgICB9LmdldFR5cGVQYXJhbWV0ZXIoKTsKICAgIH0KfQ==