recherche

Maison  >  Questions et réponses  >  le corps du texte

java - Question sur le code source de l'interface de fonction de prédicat JDK8 (Prédicat)?

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 &&booleanLes opérations logiques sur les valeurs de type peuvent renvoyer un objet prédicat ? ? ?

迷茫迷茫2715 Il y a quelques jours953

répondre à tous(4)je répondrai

  • 滿天的星座

    滿天的星座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);
    };

    répondre
    0
  • 给我你的怀抱

    给我你的怀抱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.

    répondre
    0
  • 某草草

    某草草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

    répondre
    0
  • 三叔

    三叔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

    .

    répondre
    0
  • Annulerrépondre