10

JVM 仕様では、インターフェイスが拡張されていないにもかかわらず、インターフェイスsuper_classに of が必要であると規定されているのはなぜですか?java/lang/Objectjava/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 句を持つメソッドがインターフェイスによって明示的に宣言されている場合を除きます。

4

2 に答える 2

0

JVM 仕様に表示されるのは、基本的に JLS によって指定された動作の具体的な実装です。クラスがインターフェイスを実装し、実装の詳細があるのと同じです。

于 2013-04-27T18:22:46.880 に答える