Maison > Questions et réponses > le corps du texte
Il existe une and()
méthode dans l'interface de la fonction, le code source est le suivant
default Predicate<T> and(Predicate<? super T> other) {
Objects.requireNonNull(other);
return (t) -> test(t) && other.test(t);
}
De plus, test()
Le code source est le suivant
boolean test(T t);
La question est de savoir pourquoi &&
与boolean
Les opérations logiques sur les valeurs de type peuvent renvoyer un objet prédicat ? ? ?
滿天的星座2017-06-23 09:16:14
Je ne sais pas ce qu'est un objet prédicat, mais test(t) && other.test(t)
Il s'agit d'une expression booléenne ordinaire, et elle renvoie une valeur booléenne, pas un « objet prédicat ». L'intégralité de l'instruction return est en fait l'abréviation de l'instruction suivante :
return (t) -> {
return test(t) && other.test(t);
};
给我你的怀抱2017-06-23 09:16:14
Ce qui est retourné ne l'est pas boolean
, 而是(t) -> { return true|false; }
, 表示返回一个functional interface
, 这个functional interface
是什么根据上下文确定, 只要是接受参数是1
个并且返回值是bool
都可以, 在Predicate
中就是functional interface
自己, 因为方法规定了返回值是Predicate
.
某草草2017-06-23 09:16:14
@ Fabricated Faith et @YaTou ont tous deux déclaré que ce qui est renvoyé est un Lambda, qui répond à la définition de Predicate<T>
.
Je veux juste dire pourquoi Predicate est traduit par "prédicat". Bien qu'il ait le sens de "prédicat", il est utilisé ici avec son autre sens "assertion, assertion (c'est plus facile à comprendre en utilisant une assertion en langage naturel, mais Les livres techniques de développement sont généralement appelés assertions)", qui sont utilisés pour juger quelque chose et obtenir un résultat vrai ou faux - c'est-à-dire qu'il est jugé vrai ou qu'il est jugé faux
三叔2017-06-23 09:16:14
C'est vrai qu'il n'y a aucun problème avec le code source. Je suis en charge maintenant et je serai (t) -> test(t)
当做一个整体了,其实应该 test(t) && other.test(t)
un tout Merci @fabricatedbelief et @YaTou pour leurs réponses et le grand rappel de Biancheng