函数接口中有一个 and() 方法,源码如下
default Predicate<T> and(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) && other.test(t);
}
另外,test()源码如下
boolean test(T t);
疑问就是为什么 &&与boolean类型值做逻辑运算可以返回一个谓词对象???
3 回答
MM们
TA贡献1886条经验 获得超2个赞
我不知道什么叫谓词对象,但 test(t) && other.test(t) 这就是一个普通的 boolean 表达式,返回的就是一个 boolean 的值,不是什么 “谓词对象”。整条 return 语句实际上是下面语句的简写:
return (t) -> {
return test(t) && other.test(t);
};
一只甜甜圈
TA贡献1836条经验 获得超5个赞
返回的不是boolean, 而是(t) -> { return true|false; }, 表示返回一个functional interface, 这个functional interface是什么根据上下文确定, 只要是接受参数是1个并且返回值是bool都可以, 在Predicate中就是functional interface自己, 因为方法规定了返回值是Predicate.
侃侃无极
TA贡献2051条经验 获得超10个赞
确实源码是没有问题的,是我自己现在入为主了,将 (t) -> test(t)当做一个整体了,其实应该 test(t) && other.test(t)是一个整体
添加回答
举报
0/150
提交
取消
