インターフェースで静的メソッドを宣言できないのはなぜですか? 質問する

インターフェースで静的メソッドを宣言できないのはなぜですか? 質問する

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

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

上記のコードを実行すると、次のエラーが発生します (少なくとも Eclipse では)。「インターフェイス メソッド ITest.test() の修飾子が正しくありません。public と abstract のみが許可されます」。

ベストアンサー1

ここではいくつかの問題があります。まず、静的メソッドを定義せずに宣言する問題です。これは、

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

そして

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

最初のものは、以下の理由で不可能である。エスポ言及: どの実装クラスが正しい定義であるかがわかりません。

ジャワできた後者を許可します。実際、Java 8 以降では許可されます。

おすすめ記事