四大函式式介面(必備)
程式設計師:泛型、反射、註解、列舉
新時代程式設計師: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 "我的世界";};