私が見ることができるいくつかの可能な休憩があります
- クライアントが新しいオーバーロードされたメソッドを使用すると想定しますが、コードが再コンパイルされていないため、クライアントは使用しません。
- クライアントがすでに持っていたメソッドを追加して、何か違うことをします。
- 再コンパイル時にサブクラスが壊れることを意味するメソッドを追加します。私見 これは望ましいことです。
- 戻り値の型、メソッド名、またはパラメーターの型を変更すると、実行時にエラーが発生します。
- 同じタイプのパラメーターを交換します。これはおそらく最悪で最も微妙なバグです。;)
私見、あなたを悲しませる可能性が高いのは微妙な問題です. ただし、単純にメソッドを追加するだけでコードが壊れるとは思いませんし、クライアントのコードで実行時エラーが発生していないからといって、最新バージョンを使用しているとは限りません。;)
このコードをコンパイルすると
public interface MyInterface {
void method1();
// void method2();
}
public class Main implements MyInterface {
@Override
public void method1() {
System.out.println("method1 called");
}
public static void main(String... args) {
new Main().method1();
}
}
それは印刷します
method1 called
次に、method2() のコメントを外し、インターフェイスだけを再コンパイルします。これは、インターフェイスにMain
実装されていないメソッドがあることを意味します。それでも、再コンパイルせずに実行するMain
と、
method1 called
私が持っている場合
public class Main implements MyInterface {
public void method1() {
System.out.println("method1 called");
}
public void method2() {
System.out.println("method2 called");
}
public static void main(String... args) {
new Main().method1();
}
}
// method2()
コメントアウトして実行しますが、問題はありません。