四大函數式介面(必備) 程式員:泛型、反射、註解、枚舉 新時代程式員:lambda表達式、鏈式編程、函數式介面、Stream流式計算 函數式介面:只有一個方法的介面 @FunctionalInterface public interface Runnable { public abstract vo ...
四大函數式介面(必備)
程式員:泛型、反射、註解、枚舉
新時代程式員:lambda表達式、鏈式編程、函數式介面、Stream流式計算
函數式介面:只有一個方法的介面
@FunctionalInterface
public interface Runnable {
public abstract void run();
}
//@FunctionalInterface 函數式介面,超級多
//簡化編程模型,在新版本的框架中大量應用!
//foreach(消費者類的函數式介面)
四大函數式介面:Consumer、Function、Predicate、Supplier
Function
- Function 函數式介面 R apply(T t); 輸入一個T類型的參數,返回一個R類型的值
- 只要是函數式介面都可以用lambda表達式簡化
簡化前:
Function ft = new Function<String,String>() {
@Override
public String apply(String str) {
return str;
}
};
簡化後:
Function ft = (str)->{return str;};
更加簡化後:
Function ft = str->{return str;};
Predicate
-
Predicate 斷定型介面 有一個輸入參數,返回類型只能是boolean值
-
同樣是一個函數式介面,可以簡化
簡化前:
Predicate<String> pr = new Predicate<String>() { @Override public boolean test(String str) { return str.isEmpty(); } };
簡化後:
Predicate<String> pr = str ->{return str.isEmpty();};
Comsumer
- Comsumer 消費者介面 有一個輸入參數,沒有返回值
- 同樣可以簡化
簡化前:
Consumer<String> stringConsumer = new Consumer<>() {
@Override
public void accept(String s) {
System.out.println(s);
}
};
簡化後:
Consumer<String> stringConsumer = str ->{
System.out.println(str);
};
Supplier
- Supplier 供給者介面 沒有參數只有一個返回值
- 同樣可以簡化
簡化前:
Supplier<String> stringSupplier = new Supplier<>() {
@Override
public String get() {
return "我的世界";
}
};
簡化後:
Supplier<String> stringSupplier = ()->{return "我的世界";};