関数インターフェースには and()
メソッドがあり、ソースコードは次のとおりです
また、test()
ソースコードは以下の通りです
問題は、なぜ &&
と boolean
型の値の間の論理演算が述語オブジェクトを返すことができるのかということです。 ? ?
滿天的星座2017-06-23 09:16:14
述語オブジェクトが何なのかは分かりませんが、test(t) && other.test(t)
これは普通のブール式であり、「述語オブジェクト」ではなくブール値を返します。 return ステートメント全体は、実際には次のステートメントの省略形です:
给我你的怀抱2017-06-23 09:16:14
返されるものはboolean
, 而是(t) -> { return true|false; }
, 表示返回一个functional interface
, 这个functional interface
是什么根据上下文确定, 只要是接受参数是1
个并且返回值是bool
都可以, 在Predicate
中就是functional interface
自己, 因为方法规定了返回值是Predicate
ではありません。
某草草2017-06-23 09:16:14
@ Fabricated Faith と @YaTou はどちらも、返されるのは Predicate<T>
の定義を満たす Lambda であると述べています。
Predicate が「述語」と訳される理由を言いたいのですが、Predicate には「述語」という意味がありますが、ここでは「主張、主張」という別の意味で使われています(自然言語ではアサーションを使った方がわかりやすいですが)。開発技術書などでは一般に「アサーション」と呼ばれていますが、これは何かを判断して真偽の結果、つまり真と判断されるか偽と判断されるかを知るために使われます
三叔2017-06-23 09:16:14
ソースコードに問題がないのは事実です。私が今責任を持っていますので、(t) -> test(t)
当做一个整体了,其实应该 test(t) && other.test(t)
回答とBianchengの重要な思い出をありがとう