2017-11-22 8 views
-1

誰もが知っているように、Java 9インターフェイスはprivateメソッドもサポートします。だから今インターフェイスでprivateメソッドとdefaultメソッドを宣言することができます。両方のメソッドは、ボディ(私は類似としてそれを言うことができる)を持っている必要があります。私はこのようないくつかの質問を見つけたJava 9: private interface methods, example use-case?、より多くのポイントを見つけられませんでした。Java 9:デフォルトメソッドv/sのプライベートメソッド

私は1つの違いが見出さ私の理解あたりとして:インターフェースの

default方法はprivate方法が原因private修飾子で表示されていない場合など、サブクラスに見えます。

私の質問は、それ以外の違いはありますか? APIや構造を設計するときは、privateメソッドとdefaultメソッドを使用する必要があります。

+4

**いくつかの** default **メソッドには公開されていないローカルメソッドが必要な場合は** private **メソッドにしてください。 –

答えて

4

defaultのメソッドが2つあるインターフェイスがあるとします:a()b()。 2つの方法は共通ロジックを共有しています。privateメソッドc()に入れることができます。

Java8の場合、上記のメソッドc()は、インターフェイスの内部実装であっても、公開されている必要があります。インターフェイスにprivateが導入される前は、このようなデフォルトの方法できれいなインターフェイスを作成することは困難でした。

defaultではなく、実装しようとしているインプリメンテーションがインターフェイス自体に固有のものであり、インプリメンテーションを実装している外部のものではない場合には、メソッドprivateにマークを付ける必要があります。

3

私は論理的な視点から変わっていないものがありますか?今まではprivateの方法を使っていましたか?何かを隠すには?コードを複製しないようにするには?同じことがここにあります - が必要なときに使用します。具体的には共通などのコードがある場合や、単に非表示にしたい場合に使用してください。

+0

*何かを隠すには? *この点が分かりました。 –

+0

@ArvindKatteそのプライベートメソッドとそのすべての "実装の詳細" *を公開せずにリンク*からの回答は、私が信じているのと同じことを意味します。 – nullpointer

+0

@nullpointerああ!良い点 - 私は残念なことにそのリンクされた質問を読んでいない。これは実際に重複のように見えます。しかし、時には、私を含め、重複してより良い回答を見つけることができます。それでも私は何も価値を追加していないようです。あなたはこのようなものを閉じなければならないと思いますか? – Eugene

関連する問題