Function函数的表现形式为接收一个参数,并返回一个值。Supplier、Consumer和Runnable可以看作Function的一种特殊表现形式
Supplier的表现形式为不接受参数、只返回数据
Consumer消费型函数和Supplier刚好相反。Consumer接收一个参数,没有返回值
Runnable的表现形式为即没有参数也没有返回值
代码例子:
package com;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
public class LambaFunctionConsumerEtcTest {
public static void main(String[] args) {
LambaFunctionConsumerEtcTest lambaFunctionConsumerEtcTest = new LambaFunctionConsumerEtcTest();
int a = 1;
int b = 2;
int x = lambaFunctionConsumerEtcTest.executeFunction(a, n -> {
int c = 3;
return lambaFunctionConsumerEtcTest.plus((Integer) n, b, c);
});
System.out.println("run function:" + x);
int y = lambaFunctionConsumerEtcTest.executeSupplier(() -> {
int c = 3;
return lambaFunctionConsumerEtcTest.plus(a, b, c);
});
System.out.println("run supplier:" + y);
lambaFunctionConsumerEtcTest.executeConsumer(a, n -> {
System.out.println("run consumer:" + n);
});
lambaFunctionConsumerEtcTest.executeRunnable(() -> {
System.out.println("run runnable");
});
}
public int plus(int a, int b, int c) {
return a + b + c;
}
private <T> T executeFunction(Object object, Function<Object, ?> function) {
return (T) function.apply(object);
}
private <T> T executeSupplier(Supplier<?> supplier) {
return (T) supplier.get();
}
private void executeConsumer(Object object, Consumer<Object> consumer) {
consumer.accept(object);
}
private void executeRunnable(Runnable runnable) {
runnable.run();
}
}