2017-01-04 4 views
1

Java 8 APIのいくつかのインターフェイス(例:Stream)を見ると、静的メソッドはpublic staticとして宣言されていますが、デフォルトメソッドと抽象メソッドはありません。技術的な観点から、静的メソッドのインターフェースでpublicを省略すると、パブリックアクセス修飾子とは異なる何かが得られますか?Java 8インターフェイスの静的メソッドを「静的」ではなく「public static」として明示的に宣言する必要がありますか?

+3

大きな問題は、なぜそれがあなたを気にさせるのですか? – Holger

+3

おそらく、リリース前にJDK 8から削除されたユーティリティクラス 'Streams 'からリファクタリングされていた可能性があります。 –

+0

Oracleのエンジニアは、「落胆した練習」と言って自分自身の推奨に従うと信じているので、自分のJava APIで読んだ内容に基づいてコードを書くのは慣れています。だからポイントはそれが私を気にささげることではありません。私は、技術的な観点から、静的なインターフェースで公開を省略すると、パブリックアクセス修飾子とは異なる何かを得たことを知りたい。 –

答えて

5

The Java 8 Language specification状態明確にその:

インタフェースの本体内のすべてのメソッドの宣言は、暗黙的に 公開されています。スタイルの問題として許可されますが、 は、 のインタフェースのメソッド宣言にpublic修飾子を重複して指定することはできません。

ただし、プライベートインターフェイスのサポート方法にはnew feature coming with Java 9があります。これらのプライベートメソッドは、デフォルトメソッドが恩恵を受けるコードブロックを再利用するのに便利です。

公開をJava APIに使用すると、精度の向上のためにメソッドの可視性を明示的にするためにこの変更が行われることが予想されます。その結果、たとえJava 8がそれを推奨しないとしても、これを新しいベストプラクティスとみなすことができます。 追加情報here

関連する問題