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);
}
}
}
}