Почему это не законно иметь эти два метода в одном классе?
class Test{
void add(Set<Integer> ii){}
void add(Set<String> ss){}
}
Я получаю compilation error
Метод add (Set) имеет то же стирание add (Set), что и другой метод в типе Test.
пока я могу обойти его, мне было интересно, почему джаваку это не нравится.
Я вижу, что во многих случаях логика этих двух методов будет очень схожей и может быть заменена одним
public void add(Set<?> set){}
но это не всегда так.
Это лишнее раздражает, если вы хотите иметь два constructors
, которые принимают эти аргументы, потому что тогда вы не можете просто изменить имя одного из constructors
.