oder schau dir mal generics an
public class GenerifiedClass<T> {
public T doSomething() {
...
}
}
public class ResultHolder {
private final X x;
private final Y y;
public ResultHolder(X x, Y y) {
this.x = x;
this.y = y;
}
public X getX() { return x; }
public Y getY() { return y; }
}
Ja da unterscheidet sich auch der Parameter - zugegeben. Aber ich war zu faul ein besseres Beispiel zu suchen. Die JVM erkennt die Methode aber anhand der kompletten signatur. Inklusive des Rückgabewerts. Schau dir mal den Aufruf von Java Methoden mit der C Api an. Oder kompilier eine Klasse und eine 2. die eine Methode dieser aufruft. Dann änder den Rückgabewert der Methode von void zu boolean und kompilier nur die geänderte Klasse neu. Die erste Klasse sollte das eigentlich nicht stören weil der Rückgabewert nicht beachtet wurde. Es fliegt aber eine NoSuchMethodException.
abgesehen davon, wie soll der compiler das auch merken, wenn du die aufrufende klasse nicht neu kompilierst? mit autocompile wird's halt bemerkt.kompilier nur die geänderte Klasse neu