理解消費者、述語、関数使用して、@のFunctionalInterface注釈付きJavaプログラミング機能インタフェース

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/c5113620/article/details/89208993
  • オブジェクト(抽象データは、どのようにデータを思い、そのようなデータを印刷としてどのようにデータ処理プログラムを、考える)について
  • 関数型プログラミング(抽象的行動は、何をすべきかを考え、そのように印刷されたデータに対する操作として、このデータにどうするかを考えます)

Javaの関数型プログラミング・インタフェースの多くは、消費者は、述語、関数など、@FunctionalInterfaceが注釈を付けられている、あなたが渡すことができますは、ラムダ式をパラメータ

タイプ 説明
消費者 消費者<T> オブジェクトTを受けて、値を返しません。
述語 述語<T> オブジェクトを受け取り、ブール値Tを返します
関数 機能<T、R> Tは、オブジェクトを受信し、オブジェクトRを返します
サプライヤー サプライヤー<T> オブジェクトTを提供する(例えば植物)の値を受信して​​いません
UnaryOperator UnaryOperator <T> Tは、オブジェクトを受信し、オブジェクトTを返します
BiConsumer BiConsumer <T、U> T及びU受信は値を返さない、オブジェクトをオブジェクト
BiPredicate BiPredicate <T、U> T及びU受信オブジェクトをオブジェクトは、ブール値を返します
BiFunction BiFunction <T、U、R> TとUオブジェクトは、オブジェクトを受信し、オブジェクトRを返します
BinaryOperator BinaryOperator <T> Tは、2つのオブジェクトを受け取り、オブジェクトは、Tを返します

import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;

public class Test {

    public static void main(String[] args) {

        //Consumer< T >, take T no return
        Test.cons("abc",new MyCons());
        //lambda for Consumer< T >, str is T
        Test.cons("abc",str->{if("abc".equals(str)) System.out.println(str);});

        //Predicate< T >, take T return boolean
        System.out.println(Test.pred("abc",new MyPred()));
        //lambda for Predicate< T >, str is T
        System.out.println(Test.pred("abc",str->{if("abc".equals(str)) return true;return false;}));

        //Function< T, R >, take T return R
        System.out.println(Test.func("abc",new MyFunc()));
        //lambda for Function< T, R >, str is T
        System.out.println(Test.func("abc",str->new StringBuilder(str).reverse().toString()));

    }

    public static void cons(String str, Consumer<String> consumer){
        consumer.accept(str);
    }

    public static boolean pred(String str, Predicate<String> predicate){
        return predicate.test(str);
    }

    public static String func(String str, Function<String,String> function){
        return function.apply(str);
    }

}

class MyCons implements Consumer<String>{
    @Override
    public void accept(String s) {
        if("abc".equals(s)) System.out.println(s);
    }
}

class MyPred implements Predicate<String>{
    @Override
    public boolean test(String s) {
        if("abc".equals(s)) return true;
        return false;
    }
}

class MyFunc implements Function<String,String>{
    @Override
    public String apply(String s) {
        return new StringBuilder(s).reverse().toString();
    }
}


おすすめ

転載: blog.csdn.net/c5113620/article/details/89208993