Référence de méthode 1

On définit l’interface ci-dessous.

interface MyInterface {

    String action();

}

Déterminez le résultat du code suivant.

MyInterface test = String::toLowerCase;
System.out.println(test.action("ALL_CAPS"));

A. ALL_CAPS

B. all_caps

C. Le programme compile mais lance une erreur à l’exécution

D. Le programme ne compile pas


Solution

MyInterface est une interface fonctionnelle représentant une fonction de type () -> String. Or, String::toLowerCase est équivalente à une fonction String -> String, et ce malgré le fait que toLowerCase ne prenne aucun paramètre ! En effet, étant donné qu’il s’agit d’une méthode d’instance, la chaîne de caractères en question depuis laquelle toLowerCase est appliquée est considérée comme un paramètre. Deux solutions sont possibles pour régler le problème:

La réponse correcte est donc la réponse D.