Maison >Java >javaDidacticiel >Références de méthodes
Concept :Une référence de méthode permet de référencer une méthode sans l'exécuter.
Relation avec les expressions lambda : Les deux nécessitent un contexte de type cible composé d'une interface fonctionnelle compatible.
Instance fonctionnelle : Une référence de méthode crée une instance d'une interface fonctionnelle lorsqu'elle est évaluée.
Références aux méthodes statiques
Le nom de la classe et la méthode sont séparés par un double deux-points (::), inséré dans le JDK 8.
Peut être utilisé partout où cela est compatible avec le type de cible.
Exemple de référence aux méthodes statiques
Interface fonctionnelle :
Nom : IntPredicate
Méthode : test (valeur int)
Paramètres : un entier.
Retour : un booléen (teste les conditions sur des valeurs entières).
Classe auxiliaire :
Nom : MyIntPredicates
Méthodes statiques implémentées :
isPrime() : vérifie si le nombre est premier.
isEven() : vérifie si le nombre est pair.
isPositive() : vérifie si le nombre est positif.
Méthode principale :
Nom : numTest()
Paramètres :
Une référence à l'interface IntPredicate.
Un entier en cours de test.
Exécution :
Dans la méthode main(), trois tests sont effectués avec numTest().
Pour chaque test, une référence de méthode spécifique (isPrime, isEven, isPositive) est passée en argument d'exécution.
// Démontre une référence à une méthode statique.
// Interface fonctionnelle pour prédicats numériques qui fonctionne avec
// valeurs entières.
interface IntPredicate {
test booléen(int n);
>
// Cette classe définit trois méthodes statiques qui vérifient un entier
// par rapport à une condition.
classe MyIntPredicates {
// Une méthode statique qui renvoie vrai lorsqu'un nombre est premier.
booléen statique isPrime(int n) {
if(n < 2) renvoie false;
pour(int i=2; i <= n/i; i ) {
si((n % i) == 0)
retourner faux ;
>
renvoie vrai ;
>
// Une méthode statique qui renvoie vrai lorsqu'un nombre est pair.
booléen statique isEven(int n) {
retour (n % 2) == 0;
>
// Une méthode statique qui renvoie vrai lorsqu'un nombre est positif.
booléen statique isPositive(int n) {
retourner n > 0;
>
>
classe MethodRefDemo {
// Cette méthode a une interface fonctionnelle comme type
// premier paramètre. Par conséquent, vous pouvez recevoir une référence à
// toute instance de cette interface, y compris celle créée
// par une référence de méthode.
numTest booléen statique (IntPredicate p, int v) {
retourner p.test(v);
>
public static void main(String args[])
{
résultat booléen ;
// Ici, une référence à la méthode isPrime est passée à numTest().
result = numTest(MyIntPredicates::isPrime, 17);
if(result) System.out.println("17 est premier.");
// Ensuite, une référence à la méthode isEven est utilisée.
result = numTest(MyIntPredicates::isEven, 12);
if(result) System.out.println("12 est pair.");
// Maintenant, une référence à la méthode isPositive est passée.
result = numTest(MyIntPredicates::isPositive, 11);
if(result) System.out.println("11 est positif.");
>
>
La référence à la méthode statique isPrime() est passée en argument à la méthode numTest().
La méthode isPrime() est compatible avec l'interface fonctionnelle IntPredicate.
L'expression MyIntPredicates::isPrime crée une référence où isPrime() implémente la méthode test() de IntPredicate.
Les autres appels à numTest() suivent le même principe de compatibilité et de fonctionnement.
Toute méthode possédant la signature booléenne test(int n) peut être utilisée comme référence pour l'interface IntPredicate.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!