java 8 lambda question technique pour la bibliothèque de jsonpath

Rafael Ruiz Tabares:

Je suis à la recherche d' infos sur lambda bien que je ne suis pas en mesure de trouver quelque chose de similaire à la fonction ci - dessous. Il appartient à org.springframework.test.web.servlet.result.JsonPathResultMatchers de classe et ResultMatcher est un @FunctionalInterface, et le résultat est le type MvcResult et jsonPathHelper.doesNotExist de retour void

public ResultMatcher doesNotExist() {
    return result -> jsonPathHelper.doesNotExist(getContent(result));
}

Je l'appelle ci-dessus par un

jsonPath("$._embedded" ).doesNotExist()

J'ai littéralement aucune idée sur:

  1. si jsonPathHelper.doesNotExist vide de retour alors pourquoi DoesNotExist retour ResultMatcher.

  2. Classe a quelque chose de semblable à entraîner , où est cet argument venir?

Merci

aussi:

Le lambda dans votre code:

result -> jsonPathHelper.doesNotExist(getContent(result));

est juste une représentation d'un ResultMatcherdepuis sa une FunctionalInterface. Vous pouvez le regarder comme si:

public ResultMatcher doesNotExist() {
    return new ResultMatcher() {
        @Override
        public void match(MvcResult result) throws Exception {
            jsonPathHelper.doesNotExist(getContent(result)); // returns void
        }
    };
}

si jsonPathHelper.doesNotExist vide de retour alors pourquoi DoesNotExist retour ResultMatcher

Votre méthode doesNotExist, retourne juste l'interface fonctionnelle en elle - même, qui peut ensuite être utilisé pour invoquer sa matchfonction. Notez que l' invocation serait également de retour void.

Classe a quelque chose de semblable au résultat, où est cet argument venir?

Si vous regardez la classe anonyme ci - dessus, avec une représentation lambda le resultdevient l'argument de la matchméthode dans la ResultMatchermise en œuvre.

Ainsi , lorsque vous souhaitez réellement accéder à cette mise en œuvre (ou ResultMatcheren général), vous appelez la méthode comme suit (initialisations simplifié):

ResultMatcher resultMatcher =  doesNotExist(); // your method returns here
MvcResult result = new MvcResult(); // some MvcResult object
resultMatcher.match(result); // actual invocation

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=188645&siteId=1
conseillé
Classement