package test;
import java.util.function.Consumer;
/**
* consumer函数式编程
* 满足几个要求
* 标签标示@FunctionalInterface
* 仅且有一个接口(默认匹配)
* 回调思想,或观察者思想,形参给你一个处理的逻辑没有数据流
* 数据流不是它带过来,是主函数自己
*
* @author Administrator
*
*/
public class ConsumerTest {
public static void main(String[] args) {
/************************* 测试常规一 开始 *******************************/
Foo f = new ConsumerTest().new Foo();
/************************* 旧写法 开始 ****************/
Consumer<Integer> consumer = new java.util.function.Consumer<Integer>() {
@Override
public void accept(Integer t) {
System.out.println(t);
}
};
/************************* 旧写法 结束 ****************/
/************************* 新写法 开始 ****************/
Consumer<Object> consumer1 =
t -> System.out.println(t);
f.foo(consumer1);
Consumer<String> fun = System.out::println;
fun.accept("hello world");
System.out.println("========================================");
/************************* 新写法 结束 ****************/
/************************* 测试常规一 结束 *******************************/
ConsumerTest consumerTest = new ConsumerTest();
Consumer inConsumer = list->{System.out.println(list);};
DemoA demoA = consumerTest.new DemoA();
demoA.init();
Consumer<DemoA> result = consumerTest.getConsumer(inConsumer);
result.accept(demoA);
}
public Consumer<DemoA> getConsumer(Consumer<java.util.List> inConsumer){
return a->{
java.util.List content = a.content;
inConsumer.accept(content);
};
}
public class DemoA{
java.util.List content;
public DemoA() {
this.content = new java.util.ArrayList(10);
}
public void init() {
this.content.add(1);
this.content.add(2);
this.content.add(3);
}
}
public class Foo{
private int[] data = new int[10];
public Foo() {
for(int i=0;i<10;i++) {
data[i]=i;
}
}
public void foo(Consumer<Object>consumer) {
for(int i : data) {
consumer.accept(i);
}
}
}
}