免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。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();
}
}