JVM 仕様では、インターフェイスが拡張されていないにもかかわらず、インターフェイスsuper_class
に of が必要であると規定されているのはなぜですか?java/lang/Object
java/lang/Object
私は特にJVM 仕様の§4.1を参照しています。
インターフェイスの場合、super_class アイテムの値は常に、constant_pool テーブルへの有効なインデックスである必要があります。そのインデックスの constant_pool エントリは、クラス Object を表す CONSTANT_Class_info 構造体でなければなりません。
しかし、JLS の§9.2では、インターフェースは Object を拡張しないと述べています。代わりに、暗黙的に作成された抽象メソッドが宣言され、Object クラスの各パブリック メソッドに一致します。
インターフェイスに直接のスーパーインターフェイスがない場合、インターフェイスは、署名 s、戻り値の型 r、および throws 句 t を持つ各パブリック インスタンス メソッド m に対応する、シグネチャ s、戻り値の型 r、および throws 句 t を持つパブリック抽象メンバー メソッド m を暗黙的に宣言します。ただし、同じシグネチャ、同じ戻り値の型、および互換性のある throws 句を持つメソッドがインターフェイスによって明示的に宣言されている場合を除きます。