Java 8 Methodenreferenzen

Java 8 新特性Neue Funktionen in Java 8


Eine Methodenreferenz verweist anhand ihres Namens auf eine Methode.

Methodenreferenzen können Sprachkonstrukte kompakter und prägnanter machen und redundanten Code reduzieren.

Methodenreferenzen verwenden ein Paar Doppelpunkte:: 。

Im Folgenden definieren wir 4 Methoden in der Klasse Car als Beispiele, um die 4 verschiedenen Arten von Methodenreferenzen in Java zu unterscheiden.

package com.example.main; @FunctionalInterface public interface Supplier<T> { T get(); } class Car { //Supplier ist eine Schnittstelle in JDK 1.8, die hier zusammen mit Lambda verwendet wird. public static Car create(final Supplier<Car> supplier) { return supplier.get(); } public static void collide(final Car car) { System.out.println("Kollidiert " + car.toString()); } public void follow(final Car another) { System.out.println("Folgt dem " + another.toString()); } public void repair() { System.out.println("Repariert " + this.toString()); } }
  • Konstruktorreferenz:Ihre Syntax ist Class::new, oder allgemeiner Class< T >::new. Beispiel:

    final Car car = Car.create( Car::new ); final List< Car > cars = Arrays.asList( car );
  • Statische Methodenreferenz:Ihre Syntax ist Class::static_method. Beispiel:

    cars.forEach( Car::collide );
  • Methodenreferenz auf ein beliebiges Objekt einer bestimmten Klasse:Ihre Syntax ist Class::method. Beispiel:

    cars.forEach( Car::repair );
  • Methodenreferenz auf ein bestimmtes Objekt:Ihre Syntax ist instance::method. Beispiel:

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

Beispiele für Methodenreferenzen

Geben Sie den folgenden Code in die Datei Java8Tester.java ein:

Java8Tester.java-Datei

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); } }

Im Beispiel referenzieren wir die Methode System.out::println als statische Methode.

Führen Sie das obige Skript aus, und die Ausgabe ist:

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

Java 8 新特性Neue Funktionen in Java 8

Andere Erweiterungen