JAva 8関数式プログラミング
11106 ワード
JAvaでの関数式プログラミング
まずコードを投げ出して,後で説明する
/**
* demo
*/
public class FunctionalTest {
static void testCompare1(int src, double limit) {
double d= src*src+src * 10.0;
if (d < limit){
System.out.println("Success: " + d);
}else {
System.out.println("Failure: " + d);
}
}
/**
* (x*x+10*x limit),
* @param src x
* @param limit
*/
static void testCompare2(int src, double limit) {
//
Supplier<Integer> source = () -> {
return src;
};
//
Function<Integer, Double> process = i -> i*i+i * 10.0;
//
Predicate<Double> condition = num -> {
//System.out.println("Test if " + num + " is smaller than " + limit);
return num < limit;
};
//
Consumer<Double> success = d -> System.out.println("Success: " + d);
Consumer<Double> failure = d -> System.out.println("Failure: " + d);
//
calculate(source, process, condition, success, failure);
}
/**
*
* @param source
* @param process
* @param condition
* @param success
* @param failure
*/
static void calculate(Supplier<Integer> source, Function<Integer, Double> process, Predicate<Double> condition, Consumer<Double> success, Consumer<Double> failure) {
int i = source.get();
double res = process.apply(i);
if (condition.test(res)) {
success.accept(res);
} else {
failure.accept(res);
}
}
public static void main(String[] args) {
System.out.println("==== =====");
testCompare1(2,10);
System.out.println("==== =====");
testCompare2(2,10);
}
}
まずコードを投げ出して,後で説明する