TestValid
недопустимо для начала:
TestValid.java:9: name clash: f(List<Integer>) and f(List<String>)
have the same erasure
public Integer f(List<Integer> list) {
^
Таким образом, тип возвращаемого значения - красная сельдь.Если при определении сигнатур для перегрузки были приняты во внимание типы возврата, то он будет действительным, но в настоящее время он так же недействителен, как этот:
// Equally invalid
public Integer f() {}
public String f() {}
Если вам действительно удалось получить TestValid
для компиляции, мне было бы интересно узнать, какой компилятор вы используете.