コンセプト: メソッド参照を使用すると、メソッドを実行せずに参照できます。
ラムダ式との関係: どちらも、互換性のある関数インターフェイスで構成されるターゲット型コンテキストが必要です。
関数インスタンス: メソッド参照は、評価時に関数インターフェイスのインスタンスを作成します。
静的メソッドへの参照
クラス名とメソッドは二重コロン (::) で区切られ、JDK 8 に挿入されます。
ターゲット タイプと互換性のある場所であればどこでも使用できます。
静的メソッドへの参照の例
機能インターフェース:
名前: IntPredicate
メソッド: test(int 値)
パラメータ: 整数。
戻り値: ブール値 (整数値の条件をテストします)。
補助クラス:
名前: MyIntPredicate
実装された静的メソッド:
isPrime(): 数値が素数かどうかを確認します。
isEven(): 数値が偶数かどうかをチェックします。
isPositive(): 数値が正であるかどうかを確認します。
メインメソッド:
名前: numTest()
パラメータ:
IntPredicate.
インターフェイスへの参照
テストされる整数。
実行:
main() メソッドでは、numTest() を使用して 3 つのテストが実行されます。
各テストでは、特定のメソッド参照 (isPrime、isEven、isPositive) が実行用の引数として渡されます。
// 静的メソッドへの参照を示します。
//
で動作する数値述語の関数インターフェイス
// 整数値。
インターフェース IntPredicate {
ブール値テスト(int n);
}
// このクラスは、整数をチェックする 3 つの静的メソッドを定義します
// 何らかの条件に関連して。
class MyIntPredicate {
// 数値が素数の場合に true を返す静的メソッド。
静的ブール値 isPrime(int n) {
if(n
for(int i=2; i
if((n % i) == 0)
false を返します;
}
true を返します;
}
// 数値が偶数の場合に true を返す静的メソッド。
静的ブール値 isEven(int n) {
return (n % 2) == 0;
}
// 数値が正の場合に true を返す静的メソッド。
静的ブール値 isPositive(int n) {
n を返す > 0;
}
}
class MethodRefDemo {
// このメソッドはその型として関数型インターフェースを持っています
// 最初のパラメータ。したがって、
への参照を受け取る可能性があります。
// このインターフェースの任意のインスタンス (作成されたものを含む)
// メソッド参照による。
static boolean numTest(IntPredicate p, int v) {
return p.test(v);
}
public static void main(String args[])
{
ブール値の結果;
// ここで、isPrime メソッドへの参照が numTest().
に渡されます。
result = numTest(MyIntPredicates::isPrime, 17);
if(result) System.out.println("17 は素数です。");
// その後、isEven メソッドへの参照が使用されます。
result = numTest(MyIntPredicates::isEven, 12);
if(result) System.out.println("12 は偶数です。");
// これで、isPositive メソッドへの参照が渡されます。
result = numTest(MyIntPredicates::isPositive, 11);
if(result) System.out.println("11 は正です。");
}
}
静的メソッド isPrime() への参照は、引数として numTest() メソッドに渡されます。
isPrime() メソッドは、IntPredicate 関数インターフェイスと互換性があります。
式 MyIntPredicate::isPrime は、isPrime() が IntPredicate の test() メソッドを実装する参照を作成します。
numTest() への他の呼び出しは、同じ互換性と動作原理に従います。
ブール署名 test(int n) を持つメソッドは、IntPredicate インターフェイスの参照として使用できます。
以上がメソッドのリファレンスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。