ПОДПИСЬ МЕТОДА ВКЛЮЧАЕТ ТИП ВОЗВРАТА.
Компилятор игнорирует это, когда ему нужно проверить дубликаты. Для Java незаконно иметь два метода с сигнатурой, отличающейся только типом возвращаемого значения.
Попробуй это:
public class Called {
public String aMethod() {
return "";
}
}
public class Caller {
public static void main(String[] main) {
aMethod();
}
public static void aMethod() {
Called x = new Called();
x.aMethod();
}
}
Соберите проект, перейдите в каталог bin, скопируйте куда- нибудь Caller.cass . Затем измените вызываемый метод:
public int aMethod() {
return 0;
}
Постройте проект, вы увидите, что и Called.class, и Caller.class имеют новую метку времени. Замените Caller.class выше и запустите проект. У вас будет исключение:
java.lang.NoSuchMethodError: it.prova.Called.aMethod()Ljava/lang/String;