LA FIRMA DEL MÉTODO INCLUYE EL TIPO DE DEVOLUCIÓN.
El compilador lo ignora cuando tiene que buscar duplicados. Para Java, es ilegal tener dos métodos con la firma que difieran solo por el tipo de retorno.
Trata eso:
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();
}
}
Construya el proyecto, vaya al directorio bin, copie Caller.cass en algún lugar. Luego cambia el método llamado:
public int aMethod() {
return 0;
}
Construya el proyecto, verá que tanto Called.class como Caller.class tienen una nueva marca de tiempo. Reemplace la Caller.class anterior y ejecute el proyecto. Tendrás una excepción:
java.lang.NoSuchMethodError: it.prova.Called.aMethod()Ljava/lang/String;