包括:
一. Function 接口的使用
二. Consumer 接口的使用 和 Function 接口的区别
三. Predicate 接口的使用
该接口目前发布在 java.util.function 包中。接口中主要有方法:
R apply(T t);
public class Test {
public static void main(String[] args) throws InterruptedException {
String name = "";
String name1 = "12345";
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<String,String> function) {
return function.apply(name);
}
}
- 定义 validInput 方法,传入 function 接口,然后在该方法中定义 function.apply(name),也就是说,传入一个 name 参数,应用某些规则,返回一个结果,至于是什么规则,先不定义。
- 在main 方法中调用 validInput(name,inputStr ...),这里我们定义规则,利用lambda 表达式, 规则是:传入一个 inputStr 字符串,如果为空,返回 xx;否则 返回 xx。
void accept(T t);
public class Test {
public static void main(String[] args) throws InterruptedException {
String name = "";
String name1 = "12345";
validInput(name, inputStr ->
System.out.println(inputStr.isEmpty() ? "名字不能为空":"名字正常"));
validInput(name1, inputStr ->
System.out.println(inputStr.isEmpty() ? "名字不能为空":"名字正常"));
}
public static void validInput(String name,Consumer<String> function) {
function.accept(name);
}
}
理解和Function 差不多。
boolean test(T t);
Demo,还是如上面的例子:
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<String> function) {
return function.test(name);
}
}
输出为:
false
true
false
支付宝打赏
微信打赏