Javaの9インターフェース:デフォルト修飾子は、公共のモディファイヤに換算する理由

シャルマ:

私の質問はについてですinterface私は、インターフェイスを作成し、4つのメソッドを定義する:第一の方法であるprivate方法。第二は、あるdefault方法。第三は、static方法。第四であるabstract方法。
このインタフェースをコンパイルし、そのプロファイルを確認し:defaultこの方法は、に変換されるpublic方法、及び両方staticabstract方法がプリペンド有するpublic修飾子を。どうしてこれなの?

コード:

 interface InterfaceProfile {

    private void privateM() {   //this method is hidden
        System.out.println("private Method");
    }

    default void defaultM() {
        System.out.println("Default Method");
    }

    static void staticM() {
        System.out.println("Static Method");
    }

    void doStuff(); //by default adds the public modifier
}

InterfaceProfileクラス

    D:\Linux\IDE\Workspace\OCA-Wrokspace\Ocaexam\src>javap mods\com\doubt\session\InterfaceProfile.class
Compiled from "InterfaceProfile.java"
interface com.doubt.session.InterfaceProfile {
  public void defaultM();
  public static void staticM();
  public abstract void doStuff();
}
GhostCat敬礼モニカC.:

シンプル:デフォルトでは、インターフェイスのすべてのメソッドである公共あなたはできる制限適用しているがprivate、しかし、中にあなたがそれをしない時はいつでも、そのデフォルトのキックしたがって:ありません何のすべてで起こる変換が。

引用Java言語仕様を

インタフェースの体内の方法は、(6.6)パブリックまたはプライベート宣言することができます。何のアクセス修飾子が指定されていない場合、この方法は、暗黙的にパブリックです。それは許されますが、冗長インターフェイスのメソッド宣言のための公共の修飾子を指定するには、スタイルの問題として推奨されません。

人々は、Java 8のデフォルトの方法は、多くの場合も、持っている必要性を作成したことを発見したとして(インタフェースでプライベートメソッドを持っている能力は、Javaの9で導入された、そのようなデフォルトの方法は、一般に公開これらのヘルパーメソッドをせずに、を使用することができることをプライベートメソッド)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=223214&siteId=1