ホームページ  >  記事  >  Java  >  Java8 での関数参照の使用の概要

Java8 での関数参照の使用の概要

黄舟
黄舟オリジナル
2017-09-19 10:27:021570ブラウズ

この記事では、Java8 学習チュートリアルでの関数参照の使用法を主に紹介しており、サンプル コードを通じて関数参照を詳しく紹介しています。必要な方は、以下のエディターを参照してください。一緒に勉強しに来てください。

はじめに

前回の記事では、ラムダ式の定義方法と使用方法、および他の言語と比較した Java のラムダ式の特別な仕様について例を使用して説明しました。前述したように、ラムダ式は関数参照にさらに簡略化できます。

この記事では関数参照の使い方を紹介します。詳しく説明する必要はありません。

関数参照の種類

関数参照は、次の 4 つのタイプに分類されます:

  • Integer クラスの parseInt 関数などの静的関数は、Integer として記述できます。 :parseIntInteger::parseInt

  • 对象级别函数的引用,比如 String 类的 length 函数,可以写作 String::length

  • 具体实例的函数的引用,比如名称为 expensiveTransaction 的一个实例的 getValue,写作 expensiveTransaction::getValue

  • String クラスの長さ関数などのオブジェクト レベルの関数への参照は、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。