1. ホーム
  2. java

[解決済み] なぜインターフェイスで静的メソッドを宣言してはいけないのですか?

2022-04-28 09:26:49

質問

トピックには、そのほとんどが書かれています。静的メソッドをインターフェイスで宣言できない理由は何でしょうか?

public interface ITest {
    public static String test();
}

上記のコードでは、(少なくともEclipseでは)次のエラーが発生しました: "インターフェースメソッドの不正な修飾子 ITest.test(); only public & abstract are permitted".

どうすればいいですか?

ここで、いくつかの問題が発生します。 1つ目は、静的メソッドを定義せずに宣言してしまう問題です。 これは、以下のような違いです。

public interface Foo {
  public static int bar();
}

そして

public interface Foo {
  public static int bar() {
    ...
  }
}

という理由で、1つ目は不可能です。 エスポ どの実装クラスが正しい定義なのかがわからないからです。

ジャワ かもしれない そして実際、Java 8からは後者が可能になったのです!