包括:
一. 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