どのように機能インタフェースは、Javaで働い8

Mallikarjun:

ここでは、機能のインターフェース概念を勉強しながら、私は全体走った例があります。

interface Sayable{  
   void say();  
}  
public class MethodReference {  
    public static void saySomething(){  
        System.out.println("Hello, this is static method.");  
    }  
    public static void main(String[] args) {  
        // Referring static method  
        Sayable sayable = MethodReference::saySomething;  
        // Calling interface method  
        sayable.say();  
    }  
} 

これは、「こんにちは、これは静的メソッドである。」印刷しています 出力にそれが実行されるとき。我々は(実装されていません)と言う()メソッドを呼び出したとき、それは出力を印刷する方法を私の質問

MC皇帝:

あなたはこのようなメソッドの参照と考えることができます:

Sayable sayable = new Sayable() {

    @Override
    void say() {
        // Grab the body of the method referenced by the method reference,
        // which is the following:
        System.out.println("Hello, this is static method.");
    }
}

メソッド参照は有効であるためであります

  • ターゲット・タイプは、機能インタフェース Sayable(あなたに結果を格納しようとしているSayableタイプ)。そして
  • メソッド参照の署名saySomething()一致機能インターフェース方式say()であり、パラメータ戻り型が一致1

実装say()方法Sayableインスタンス変数と呼ぶsayable方法の本体等しいメソッド参照が指すを。

だから、JB Nizetのように、コメントで述べているsay()実際にされて実装されています。


1 A少し詳細:単語「試合は」正確に意味するものではありません「等しいです」。例えば場合は、saySomething()返されたintターゲット型の唯一の方法があることを戻り値の型を定義しますが、それはまだ、動作しますvoid

おすすめ

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