Java 8以降、defaultメソッドがインターフェイスに導入されました。事実上、これはのすべてのメソッドがであるとinterfaceは限らないことを意味しますabstract。
Java 9(おそらく)以降、privateメソッドは許可されます。これは、のすべてのメソッドがであるとinterfaceは限らないことを意味しますpublic abstract。
「Javaインターフェイスのメソッドは、publicアクセス修飾子を付けて、または付けずに宣言する必要がありますか?」という質問 スタックオーバーフローで/programming/161633/should-methods-in-a-java-interface-be-declared-with-or-without-a-public-access-mで尋ねられました
そこでは、ほとんどの回答はpublic abstract使用すべきではないと主張しました。なぜなら、のメソッドはinterface以外のものではないからですpublic abstract。もはやそうではありません。
インターフェースのこれらの新しい機能をpublic abstract考慮して、Javaインターフェースメソッドの宣言でキーワードを使用する必要がありますか?
私の特定の環境では、経験豊富なソフトウェアエンジニアがJavaを経験していない人がいて、Javaコードを時々読んでいます。public abstractキーワードを省略すると、インターフェースがこれらのキーワードを使用するためのさまざまなルールを持つようになった経緯に詳しくない人にとっては、さらなる混乱点が生じると思います。
abstract複雑になりつつあるため、状況が変わる可能性があると考えました。Java 9では、同じ文は、「default修飾子、static修飾子、またはprivate修飾子が欠けているインターフェースメソッドは暗黙的に抽象的です...」になります。さらに、キーワードを明示的に使用しないための補助引数、つまり、すべてのインターフェースメソッドはpublic abstract、今では意味がありません。
streamするがjava.util.Collection、かMap.getOrDefault()。別の方法は、新しいサブインターフェイスを作成し、Graphics2Dのように全員をダウンキャストさせることです。
default修飾またはstatic修飾子が暗黙的にされてabstract...それが許可されていますが、スタイルの問題として、abstractこのようなメソッド宣言の修飾子を冗長に指定することは推奨されません。」なぜ物事は変わるはずだと思いますか?