class Ideone {
public static void main
(String[] args
) { final Test<String> testString = new Test<>();
final String tString
= testString.
doSomethingWithT("Hello"); // will not compile since 1 is not a String:
// int tInt = testString.doSomethingWithT(1);
final String uString
= testString.
doSomethingWithU("World!"); final int uInt = testString.doSomethingWithU(1);
}
}
class Test<T> {
public T doSomethingWithT(T t) {
return t;
}
public <U> U doSomethingWithU(U u) {
return u;
}
}
Y2xhc3MgSWRlb25lIHsKICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICBmaW5hbCBUZXN0PFN0cmluZz4gdGVzdFN0cmluZyA9IG5ldyBUZXN0PD4oKTsKICAgIGZpbmFsIFN0cmluZyB0U3RyaW5nID0gdGVzdFN0cmluZy5kb1NvbWV0aGluZ1dpdGhUKCJIZWxsbyIpOwogICAgU3lzdGVtLm91dC5wcmludGxuKHRTdHJpbmcpOwogICAgLy8gd2lsbCBub3QgY29tcGlsZSBzaW5jZSAxIGlzIG5vdCBhIFN0cmluZzoKICAgIC8vIGludCB0SW50ID0gdGVzdFN0cmluZy5kb1NvbWV0aGluZ1dpdGhUKDEpOwogICAgZmluYWwgU3RyaW5nIHVTdHJpbmcgPSB0ZXN0U3RyaW5nLmRvU29tZXRoaW5nV2l0aFUoIldvcmxkISIpOwogICAgU3lzdGVtLm91dC5wcmludGxuKHVTdHJpbmcpOwogICAgZmluYWwgaW50IHVJbnQgPSB0ZXN0U3RyaW5nLmRvU29tZXRoaW5nV2l0aFUoMSk7CiAgICBTeXN0ZW0ub3V0LnByaW50bG4odUludCk7CiAgfQp9CgpjbGFzcyBUZXN0PFQ+IHsKICBwdWJsaWMgVCBkb1NvbWV0aGluZ1dpdGhUKFQgdCkgewogICAgcmV0dXJuIHQ7CiAgfQoKICBwdWJsaWMgPFU+IFUgZG9Tb21ldGhpbmdXaXRoVShVIHUpIHsKICAgIHJldHVybiB1OwogIH0KfQ==