Sagen wir, ich habe eine Schnittstelle wie unten;Ist Schnittstellen nur kompilieren Zeitabhängigkeit?
public interface aitf{
public void method1();
}
und eine Implementierungsklasse;
public class a implements aitf{
public void method1(){
System.out.println("method 1");
}
public static void main(String... args){
new a().method1();
}
}
und es läuft und drucken wie erwartet.
Und dann, wenn ich eine Methode ändern und hinzufügen und nur Schnittstelle neu kompilieren;
public interface aitf{
public void method1();
public void method2();
}
konkrete Klasse (a) funktioniert noch. Eigentlich macht dieses Verhalten Sinn, da sonst alle API-Änderungen Probleme verursachen. Aber wie erklärt man dieses Verhalten, sind Interfaces nur Zeitabhängigkeiten kompilieren?
Versuchen Sie 'new a(). Method2()' aufzurufen, ohne es erneut zu kompilieren ... Java ist zur Laufzeit verbunden. –
Es klingt wie Klasse 'a' wurde nicht neu kompiliert, nur die Schnittstelle war. Wenn Sie versucht haben, beide neu zu kompilieren, erhalten Sie einen Kompilierungsfehler. –
@AndyTurner Ich weiß, es wird brechen, wenn ich getan habe, was Sie fragen, aber meine Frage ist anders. – cacert