Références de méthodes Java 8

Java 8 新特性Nouveautés de Java 8


Une référence de méthode pointe vers une méthode par son nom.

Les références de méthodes peuvent rendre les constructions du langage plus compactes et concises, en réduisant le code redondant.

Les références de méthodes utilisent une paire de deux-points:: 。

Ci-dessous, nous définissons 4 méthodes dans la classe Car comme exemples pour distinguer les 4 différents types de références de méthodes en Java.

package com.example.main; @FunctionalInterface public interface Supplier<T> { T get(); } class Car { //Supplier est une interface dans JDK 1.8, utilisée ici avec lambda. public static Car create(final Supplier<Car> supplier) { return supplier.get(); } public static void collide(final Car car) { System.out.println("Collisionné " + car.toString()); } public void follow(final Car another) { System.out.println("Suivant la " + another.toString()); } public void repair() { System.out.println("Réparé " + this.toString()); } }
  • Référence de constructeur :Sa syntaxe est Class::new, ou plus généralement Class< T >::new. Exemple :

    final Car car = Car.create( Car::new ); final List< Car > cars = Arrays.asList( car );
  • Référence de méthode statique :Sa syntaxe est Class::static_method. Exemple :

    cars.forEach( Car::collide );
  • Référence de méthode vers un objet arbitraire d'une classe particulière :Sa syntaxe est Class::method. Exemple :

    cars.forEach( Car::repair );
  • Référence de méthode à un objet spécifique :Sa syntaxe est instance::method. Exemple :

    final Car police = Car.create( Car::new ); cars.forEach( police::follow );

Exemples de références de méthode

Entrez le code suivant dans le fichier Java8Tester.java :

Fichier Java8Tester.java

import java.util.List; import java.util.ArrayList; public class Java8Tester { public static void main(String args[]){ List<String> names = new ArrayList(); names.add("Google"); names.add("Example"); names.add("Taobao"); names.add("Baidu"); names.add("Sina"); names.forEach(System.out::println); } }

Dans l'exemple, nous référençons la méthode System.out::println comme méthode statique.

Exécutez le script ci-dessus, et la sortie est :

$ javac Java8Tester.java 
$ java Java8Tester
Google
Example
Taobao
Baidu
Sina

Java 8 新特性Nouveautés de Java 8

Autres extensions