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
。