Java 8 APIのいくつかのインターフェイス(例:Stream)を見ると、静的メソッドはpublic staticとして宣言されていますが、デフォルトメソッドと抽象メソッドはありません。技術的な観点から、静的メソッドのインターフェースでpublicを省略すると、パブリックアクセス修飾子とは異なる何かが得られますか?Java 8インターフェイスの静的メソッドを「静的」ではなく「public static」として明示的に宣言する必要がありますか?
1
A
答えて
5
The Java 8 Language specification状態明確にその:
インタフェースの本体内のすべてのメソッドの宣言は、暗黙的に 公開されています。スタイルの問題として許可されますが、 は、 のインタフェースのメソッド宣言にpublic修飾子を重複して指定することはできません。
ただし、プライベートインターフェイスのサポート方法にはnew feature coming with Java 9があります。これらのプライベートメソッドは、デフォルトメソッドが恩恵を受けるコードブロックを再利用するのに便利です。
公開をJava APIに使用すると、精度の向上のためにメソッドの可視性を明示的にするためにこの変更が行われることが予想されます。その結果、たとえJava 8がそれを推奨しないとしても、これを新しいベストプラクティスとみなすことができます。 追加情報here。
関連する問題
- 1. 静的宣言は非static宣言に従うが、静的
- 2. PHP - 静的メソッドと非静的メソッドを宣言できますか?
- 3. Javaの非静的クラスで静的変数を宣言する
- 4. java静的メソッドなぜ必要です
- 5. 私的静的メソッドの必要性はありますか?
- 6. どこで静的変数を宣言する必要がありますか?
- 7. C#で静的変数を宣言する必要がありますWinfoms
- 8. WPFコントロールで静的または非静的としてEventHandlerを宣言する
- 9. アドバイスが必要:JAVAインターフェースの静的メソッド
- 10. 静的メソッドはJavaでオーバーライドする必要がありますか?
- 11. 静的メソッドと非静的メソッドでインスタンスを使用する必要があります
- 12. mの静的宣言は非静的宣言に従います
- 13. 静的メソッドと静的変数のjava
- 14. varを必要とする静的メソッド
- 15. シングルトン内のメンバー変数は静的として宣言する必要がありますか?
- 16. 不正な静的宣言
- 17. 静的でないクラスメンバーがない場合、クラスを静的にする必要がありますか?
- 18. 許可非静的宣言が続く静的宣言の根拠はなく、その逆
- 19. CustomFieldSerializerに静的メソッドが必要なのはなぜですか?
- 20. Javaでは、静的メソッド自体の内部で宣言された変数は静的ですか?
- 21. 静的メソッドのヘルプが必要な
- 22. エラー注釈プロセッサを明示的に宣言する必要があります
- 23. 静的メソッドで使用するとC#enum型を静的宣言する必要がないのはなぜですか?
- 24. 使用宣言は静的ですか?
- 25. 静的メソッドで静的メソッドと非静的メソッドにアクセスする方法
- 26. 基本クラスで静的メソッドを宣言する必要があるのはいつですか?
- 27. 静的クラスと静的メソッド
- 28. 静的インターフェイスファクトリメソッド[Java 8]
- 29. ClassInitializeメソッドを静的にする必要があるのはなぜですか?
- 30. 静的メソッドを使用する静的メソッドまたは非静的メソッド
大きな問題は、なぜそれがあなたを気にさせるのですか? – Holger
おそらく、リリース前にJDK 8から削除されたユーティリティクラス 'Streams 'からリファクタリングされていた可能性があります。 –
Oracleのエンジニアは、「落胆した練習」と言って自分自身の推奨に従うと信じているので、自分のJava APIで読んだ内容に基づいてコードを書くのは慣れています。だからポイントはそれが私を気にささげることではありません。私は、技術的な観点から、静的なインターフェースで公開を省略すると、パブリックアクセス修飾子とは異なる何かを得たことを知りたい。 –