大家好,欢迎来到IT知识分享网。
概述
predicate的中文意思有【表明,断言】,是对一个事务的判断,而我们说的这个Predicate是java8中的新特性接口。它主要是用于lambda表达式,用于判断,返回布尔类型的数据。我们这里主要是来说说它的各个方法的使用。
接口详情
1. test
这个方法是这个接口中唯一的抽象方法,函数式接口两种有且只有一个抽象方法(其它方法为有方法体的默认方法和静态方法)。
/**
* 根据输入的参数预估这个断言
*
* @param t 输入参数
* @return 如果这个参数匹配断言返回true,否则返回false
*/
boolean test(T t);
这个方法是需要进行实现的方法,也就是我们使用lambda表达式时候实现的就是这个方法,通过自定义方法体算法来对这个输入的参数进行一个判断。
2. and
这个方法是该接口的默认方法,在java8中使用关键字default可以在接口中定义有方法体的方法。该方法表示的是两个断言逻辑与的组合断言。
/**
* 这个返回的是断言组合,返回的这个断言组合是一个断言和另外一个断言的逻辑与。
* 在进行断言组合的计算时,如果当前断言的返回值是false,那么参数断言也就不用
* 计算了。
*
* 组合断言中的任何一个断言发生异常,该异常都将转发给调用者。
* 如果发生异常的断言是当前断言,那么参数断言也就不会计算了。
*
*
* @param other 参数断言,作为逻辑与断言和当前断言进行计算。
* @return 返回一个组合断言,该断言是当前断言和参数断言的逻辑与。
* @throws 如果组合断言是null将会抛出空指针异常。
*/
default Predicate<T> and(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) && other.test(t);
}
3. or
该方法表示的是两个断言逻辑或的组合断言。
/**
* 这个返回的是断言组合,返回的这个断言组合是一个断言和另外一个断言的逻辑或。
* 在进行断言组合的计算时,如果当前断言的返回值是true,那么参数断言也就不用
* 计算了。
*
* 组合断言中的任何一个断言发生异常,该异常都将转发给调用者。
* 如果发生异常的断言是当前断言,那么参数断言也就不会计算了。
*
* @param other 参数断言,作为逻辑或断言和当前断言进行计算。
* @return 返回一个组合断言,该断言是当前断言和参数断言的逻辑或。
* @throws 如果组合断言是null将会抛出空指针异常。
*/
default Predicate<T> or(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) || other.test(t);
}
4. negate
该方法返回的是test方法的逻辑否。
/**
* 返回当前断言的逻辑否的断言对象。
*
* @return 当前断言的逻辑否断言对象。
*/
default Predicate<T> negate() {
return (t) -> !test(t);
}
5. isEqual
该方式接口中的静态方法,可以使用接口名加方法进行调用,返回断言对象,test是比较两个参数对象是否相等的。
/**
* 判断两个对象是否相等的断言对象。静态方法。
*
* @param 要及进行比较的对象参数
* @return 两个参数进行一致性比较的断言对象。
*/
static <T> Predicate<T> isEqual(Object targetRef) {
return (null == targetRef)
? Objects::isNull
: object -> targetRef.equals(object);
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15008.html