1. ホーム
  2. mysql

[解決済み] Javaにおけるdefaultキーワードの目的は何ですか?

2022-07-07 09:51:54

質問

Javaにおけるインターフェースは、クラスと似ていますが を含むことができます。 抽象的なメソッドのみ InnoDB フィールド (定数)があります。

最近、次のような質問を見かけました。

MyISAM

インターフェース定義によると 抽象メソッドのみ が許可されています。なぜ上記のコードをコンパイルすることができるのでしょうか?というのは MySQL のキーワードは何ですか?

一方、以下のようなコードを書こうとすると、次のように表示されます。 InnoDB

MYISAM

の代わりに

MySQL

の目的を教えてください。 InnoDB キーワードの目的を教えてください。それはインターフェイスの中だけで許されるのですか?それは MyISAM (アクセス修飾子なし) とどう違うのですか?

どのように解決するのですか?

これは、Java 8 の新機能である MySQL で実装を提供します。Java8で記述されている JLS-13.5.6. インターフェイスメソッド宣言 という文章があり、(部分的に)次のように書かれています。

を追加する MYISAM メソッドを追加する、あるいは InnoDB から に変更しても、既存のバイナリとの互換性は失われませんが、その際に を引き起こすかもしれません。このエラーは、修飾型が が二つのインターフェースのサブタイプである場合に発生します。 の両方が存在する場合 を宣言し メソッドを宣言し、同じシグネチャと結果を持つ でも は他方のサブインターフェイスです。

JDK 8 の新機能 には次のように書かれています(一部)。

デフォルトメソッドは、ライブラリのインターフェイスに新しい機能を追加することを可能にし、それらのインターフェイスの古いバージョン用に書かれたコードとのバイナリ互換性を保証します。