java8新特性—四大內置核心接口
四大內置核心接口
//消費型接口
Consumer<T>:: vode accept(T t);
//供給型接口
Supplier<T>:: T get();
//函式型接口
Function<T,R>:: R apply(T t);
//斷言型接口
Predicate<T>:: boolean test(T t);
消費型接口
@Test
public void test() {
addMoney(20, (m) -> System.out.println(m + 20));
}
private void addMoney(Integer money, Consumer<Integer> con) {
con.accept(money);
}
供給型接口
@Test
public void test() {
List<Integer> list = getMoney(5, () -> (int) (Math.random() * 5));
for (Integer integer : list) {
System.out.println(integer);
}
}
private List<Integer> getMoney(Integer nums, Supplier<Integer> sp) {
List<Integer> list = new ArrayList<Integer>(0);
for (int i = 0; i < nums; i++) {
Integer n = sp.get();
list.add(n);
}
return list;
}
函數式型接口
@Test
public void test3() {
System.out.println(strHandle(" lll lll ccc ccc ", String::trim));
}
private String strHandle(String str, Function<String,String> function) {
return function.apply(str);
}
斷言型接口
@Test
public void test4() {
System.out.println(filterStr("holle",(e) -> e.equals('l')));
}
private Character filterStr(String str, Predicate<Character> pt) {
char[] chars = str.toCharArray();
for (char aChar : chars) {
if (pt.test(aChar)) {
return aChar;
}
}
return '\0';
}
總結
- 有輸入並處理,無輸出,用消費型接口(Consumer< T >)
- 無輸入,有輸出,用供給型接口(Supplier< T >)
- 有輸入並有處理輸出,用函數式型接口(Function<T,R>)
- 無輸入,處理判斷條件並輸出布爾類型(true or false),用斷言型接口(Predicate< T >)