日曜日, 1月 11, 2015

Java8 - Function::compose

Java8のFunctionクラスのcompose()メソッドを使えば,簡単にメソッドチェインを実装できる.
上手く使えばコードをかなり簡潔にできるだろう.以下のコードは3つの文字列操作フィルタをチェインして適用させた例.

package org.tanuneko;

import java.util.function.Function;
import java.util.stream.Stream;

public class FuncComposer {

    public FuncComposer() {
    }

    public void run() throws Exception {
        Function<String,String> addPrefixFilter = x -> "***" + x;
        Function<String,String> addPostfixFilter = x -> x + "***";
        Function<String,String> toLowerCaseFilter = x -> x.toLowerCase();
        String base = "WOW";

        Function<String,String> composedFilter =
        Stream.of(addPrefixFilter, addPostfixFilter, toLowerCaseFilter)
                .reduce((func, nxt)->func.compose(nxt))
                .orElseGet(Function::identity);

        System.out.println(composedFilter.apply(base));
    }


    public static void main(String args[]) throws Exception {
        FuncComposer c = new FuncComposer();
        c.run();
    }
}

0 件のコメント: