亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JDK8 謂詞函數接口(Predicate)源碼疑問?

JDK8 謂詞函數接口(Predicate)源碼疑問?

郎朗坤 2019-03-01 10:55:33
函數接口中有一個 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);
};
查看完整回答
反對 回復 2019-03-01
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

返回的不是boolean, 而是(t) -> { return true|false; }, 表示返回一個functional interface, 這個functional interface是什么根據上下文確定, 只要是接受參數是1個并且返回值是bool都可以, 在Predicate中就是functional interface自己, 因為方法規定了返回值是Predicate.

查看完整回答
反對 回復 2019-03-01
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

確實源碼是沒有問題的,是我自己現在入為主了,將 (t) -> test(t)當做一個整體了,其實應該 test(t) && other.test(t)是一個整體

查看完整回答
反對 回復 2019-03-01
  • 3 回答
  • 0 關注
  • 566 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號