函数式接口学习笔记

三个函数式接口学习: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应用到输入的参数上,自己定制规则,根据规则判断返回值。

你可能感兴趣的:(函数式接口学习笔记)