この記事では、Java8 学習チュートリアルでの関数参照の使用法を主に紹介しており、サンプル コードを通じて関数参照を詳しく紹介しています。必要な方は、以下のエディターを参照してください。一緒に勉強しに来てください。
はじめに
前回の記事では、ラムダ式の定義方法と使用方法、および他の言語と比較した Java のラムダ式の特別な仕様について例を使用して説明しました。前述したように、ラムダ式は関数参照にさらに簡略化できます。
この記事では関数参照の使い方を紹介します。詳しく説明する必要はありません。
関数参照の種類
関数参照は、次の 4 つのタイプに分類されます:
Integer クラスの parseInt 関数などの静的関数は、Integer として記述できます。 :parseInt
Integer::parseInt
对象级别函数的引用,比如 String 类的 length 函数,可以写作 String::length
具体实例的函数的引用,比如名称为 expensiveTransaction 的一个实例的 getValue,写作 expensiveTransaction::getValue
String::length
として記述できます
) expensiveTransaction::getValue
の記述
コンストラクターリファレンス
静的関数
例:
Function<String, Integer> stringToInteger = (String s) -> Integer.parseInt(s);
Function<String, Integer> stringToInteger = Integer::parseInt;
オブジェクトレベル関数への参照
BiPredicate<List<String>, String> contains = (list, element) -> list.contains(element);は次のように記述できます:
BiPredicate<List<String>, String> contains = List::contains;
コンストラクター
以下はコンストラクターの別の例です。最初に関数インターフェイスを定義します。get メソッドは指定された型のオブジェクトを返します。
@FunctionalInterface public interface Supplier<T> { T get(); }
Supplier<TantanitReader> constructor = () -> new TantanitReader(); TantanitReader tantanitReader = constructor.get();
上記のコードは、ラムダ式 new を使用し、新しいオブジェクトを返し、コンストラクター変数をコンストラクターへの参照にします。
Supplier<TantanitReader> constructor2 = TantanitReader::new; TantanitReader tantanitReader2 = constructor2.get();上記の例はすべてパラメーターなしです。以下では、パラメーターを使用した場合を紹介するために、コンストラクターを例にしています。この関数にはパラメータが 1 つしかないため、Java に付属する Function インターフェースを使用できます。実際に動作する関数は次のとおりです。
public TantanitReader(String loginName) {
this.loginName = loginName;
}
この関数は、1 つのパラメータに基づいて結果を返します。これから、constructor4 と対応する関数参照constructor5 を使用できます。
関数参照を使用すると、ラムダ式を簡素化できるだけでなく、意味的にメソッド名、つまり何を行うかに重点を置くことができ、抽象化レベルが人間の認識に近づきます。したがって、可能な限り関数参照を使用する必要があります。
🎜概要🎜🎜🎜以上がJava8 での関数参照の使用の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。