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 ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC4qOwoKcHVibGljIGNsYXNzIE1haW4gewoJCiAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24gewogICAgVGVzdER0bzxJbnRlZ2VyPiBhID0gbmV3IFRlc3REdG88SW50ZWdlcj4oKXt9OwogICAgVGVzdER0bzxTdHJpbmc+IGIgPSBuZXcgVGVzdER0bzxTdHJpbmc+KCl7fTsKICAgIFN5c3RlbS5vdXQucHJpbnRsbihhLmdldFR5cGVQYXJhbWV0ZXIoKSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4oYi5nZXRUeXBlUGFyYW1ldGVyKCkpOwogIH0KfQoKY2xhc3MgVGVzdER0bzxUPiB7CiAgcHVibGljIFR5cGUgZ2V0VHlwZVBhcmFtZXRlcigpIHsKICAgIHJldHVybiAoKFBhcmFtZXRlcml6ZWRUeXBlKSBnZXRDbGFzcygpLmdldEdlbmVyaWNTdXBlcmNsYXNzKCkpLmdldEFjdHVhbFR5cGVBcmd1bWVudHMoKVswXTsKICB9Cn0=