写在前面
JDK8 API提供了很多函数式接口,这些函数式接口可以被抽象成一个具体的方法,并且使其使用在Lambda表达式中,今天我们要来说的就是其中的Predicate函数接口。
Predicate
Predicate提供了一个抽象方法,test()方法。
test方法接收一个参数,返回一个布尔元素结果值。
test方法使用示例
如下代码:
public static void main(String[] args) { Predicate<String> predicate = s -> "字符串".equals(s); System.out.println(predicate.test("字符串")); System.out.println(predicate.test("字符串1")); }
运行结果如下:
默认方法and方法
and方法是predicate一个默认方法,是一个类似于运算符的概念,利用这个方法,我们可以对predicate加入更多的条件,并且进行一些判断。
如下代码:
public static void main(String[] args) { Predicate<String> predicate = s -> "字符串".equals(s); predicate = predicate.and(s -> s.length() == 3); System.out.println(predicate.test("字符串")); System.out.println(predicate.test("字符串1")); }
运行结果如下:
默认方法or方法
接着我们来介绍一个新的默认方法,or方法,不多解释了,直接看代码吧。
public static void main(String[] args) { Predicate<String> predicate = s -> "字符串".equals(s); predicate = predicate.or(s -> s.length() == 4); System.out.println(predicate.test("字符串")); System.out.println(predicate.test("字符串1")); }
运行结果如下:
默认方法negate方法
最后一个默认方法了,negate方法,即取反结果,来看一下代码示例吧。
public static void main(String[] args) { Predicate<String> predicate = s -> "字符串".equals(s); predicate = predicate.or(s -> s.length() == 4); System.out.println(predicate.negate().test("字符串")); System.out.println(predicate.negate().test("字符串1")); }
运行结果如下:
总结
今天学习的Predicate函数式接口主要是用来配合Lambda表达式,你学会了吗?