JLSにして、オブジェクトのメソッドの必須(暗黙の)宣言の背後にある理由9.2それはインタフェースが直接的上位を、持っていない場合、インタフェースは暗黙のうちに、パブリック抽象メンバを宣言しのJava:任意のインターフェイス定義の段落で
語ります同じ署名、同じ戻り型、および同じ戻り型を持つメソッドがない限り、署名s、戻り型r、およびオブジェクトに宣言されたthrows句tを持つ各公開インスタンスメソッドmに対応する署名s、戻り型r、およびthrows句tを持つメソッドm互換性のあるthrows節は、インタフェースによって明示的に宣言されます。
宣言が仮説的に省略された場合、コンパイル時エラーが発生します。しかし、なぜコンパイラはこれらの宣言を要求するのですか?いずれのクラスもObjectのメソッドを継承します。つまり、これらのメソッドに関しては、特定の動作はすでに保証されていますか?どのインタフェース定義でもこれらの宣言を必要とする理由は何でしょうか?
public void printList(List<?> list) {
System.out.println(list.toString());
}
これはタイプList
を動作させるための方法toString()
を宣言する必要があります。
https://stackoverflow.com/questions/16255073/why-do-interfaces-extend-object-according-to-the-class-file-formatの重複? –