三个函数式接口学习:Function Consumer Predicate
Function: 主要方法:R apply(T t);
public class Test {
public static void main(String[] args) throws InterruptedException {
String name = "";
String name1 = "xiaoming";
System.out.println(validInput(name, inputStr -> inputStr.isEmpty() ? "名字不能为空":inputStr));
System.out.println(validInput(name1, inputStr -> inputStr.length() > 3 ? "名字过长":inputStr));
}
public static String validInput(String name,Function function) {
return function.apply(name);
}
}
输出结果:
名字不能为空
名字过长
我觉得就是将参数应用到Function函数中,然后经过Function函数自己定义的规则,返回符合规则的值。
Consumer:主要方法:void accept(T t);
public class Test {
public static void main(String[] args) throws InterruptedException {
String name = "";
String name1 = "xiaoming";
validInput(name, inputStr -> System.out.println(inputStr.isEmpty() ? "名字不能为空":"名字正常"));
validInput(name1, inputStr -> System.out.println(inputStr.isEmpty() ? "名字不能为空":"名字正常"));
}
public static void validInput(String name,Consumer function) {
function.accept(name);
}
}
输出结果:
名字不能为空
名字正常
Consumer和Function差不多,只不过Consumer有返回值,Function没有返回值。
Predicate:主要方法:boolean test(T t);
public class Test {
public static void main(String[] args) throws InterruptedException {
String name = "";
String name1 = "12";
String name2 = "12345";
System.out.println(validInput(name,inputStr -> !inputStr.isEmpty() && inputStr.length() <= 3 ));
System.out.println(validInput(name1,inputStr -> !inputStr.isEmpty() && inputStr.length() <= 3 ));
System.out.println(validInput(name2,inputStr -> !inputStr.isEmpty() && inputStr.length() <= 3 ));
}
public static boolean validInput(String name,Predicate function) {
return function.test(name);
}
}
输出结果:
false
true
false
将Predicate应用到输入的参数上,自己定制规则,根据规则判断返回值。