import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Comparator;
public class Main {
class MyType {
}
class MyComparator implements Comparator<MyType> {
@Override
public int compare(MyType o1, MyType o2) {
return 0;
}
@Override
public boolean equals
(Object obj
) { return false;
}
}
public static void main
(String[] args
) { Class<?> klass = MyComparator.class;
Type comparatorType = klass.getGenericInterfaces()[0];
System.
out.
println(comparatorType.
getTypeName()); ParameterizedType preciseType = (ParameterizedType) comparatorType;
System.
out.
println(preciseType.
getActualTypeArguments()[0]); }
}
aW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LlBhcmFtZXRlcml6ZWRUeXBlOwppbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuVHlwZTsKaW1wb3J0IGphdmEudXRpbC5Db21wYXJhdG9yOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgY2xhc3MgTXlUeXBlIHsKICAgIH0KCiAgICBjbGFzcyBNeUNvbXBhcmF0b3IgaW1wbGVtZW50cyBDb21wYXJhdG9yPE15VHlwZT4gewogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShNeVR5cGUgbzEsIE15VHlwZSBvMikgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIEBPdmVycmlkZQogICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIENsYXNzPD8+IGtsYXNzID0gTXlDb21wYXJhdG9yLmNsYXNzOwogICAgICAgIFR5cGUgY29tcGFyYXRvclR5cGUgPSBrbGFzcy5nZXRHZW5lcmljSW50ZXJmYWNlcygpWzBdOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihjb21wYXJhdG9yVHlwZS5nZXRUeXBlTmFtZSgpKTsKICAgICAgICBQYXJhbWV0ZXJpemVkVHlwZSBwcmVjaXNlVHlwZSA9IChQYXJhbWV0ZXJpemVkVHlwZSkgY29tcGFyYXRvclR5cGU7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHByZWNpc2VUeXBlLmdldEFjdHVhbFR5cGVBcmd1bWVudHMoKVswXSk7CiAgICB9Cn0K