English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Guida di base Java

Controllo del flusso Java

Array Java

Java Orientato agli oggetti (I)

Java Orientato agli oggetti (II)

Java Orientato agli oggetti (III)

Gestione delle eccezioni Java

Elenco Java (List)

Java Queue (coda)

Mappe Java

Set di Java

Input/Output (I/O) Java

Lettore/Scrittore Java

Altri argomenti Java

Riferimento al metodo Java 8

Nuove caratteristiche di Java 8

Il riferimento al metodo punta a un metodo tramite il nome del metodo.

Il riferimento al metodo può rendere la costruzione del linguaggio più compatta e concisa, riducendo il codice ridondante.

Il riferimento al metodo utilizza un paio di due punteggiature di due punti :: .

Di seguito, abbiamo definito 4 metodi come istanze nella classe Car per distinguere i 4 tipi di riferimenti ai metodi diversi in Java.

package com.w3codebox.main;
 
@FunctionalInterface
public interface Supplier<T> {
    T get();
}
 
class Car {
    //Supplier è un'interfaccia di JDK 1.8, qui è stato utilizzato insieme a lambda
    public static Car create(final Supplier<Car> supplier) {
        return supplier.get();
    }
 
    public static void collide(final Car car) {
        System.out.println("Collidendo " + car.toString());
    }
 
    public void follow(final Car another) {
        System.out.println("Seguendo " + another.toString());
    }
 
    public void repair() {
        System.out.println("Riparato " + this.toString());
    }
}
  • Riferimento al costruttore:La sua sintassi è Class::new, o più in generale Class<T>::new, come nell'esempio seguente:

    final Car car = Car.create(Car::new);
    final List<Car> cars = Arrays.asList(car);
  • Riferimento a metodo statico:La sua sintassi è Class::static_method, come nell'esempio seguente:

    cars.forEach(Car::collide);
  • Riferimento a metodo di qualsiasi oggetto di una classe specifica:La sua sintassi è Class::method, come nell'esempio seguente:

    cars.forEach(Car::repair);
  • Riferimento a metodo di un oggetto specifico:La sua sintassi è instance::method, come nell'esempio seguente:

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

Esempio di metodo di riferimento

Inserisci il seguente codice nel file 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("w3codebox");
      names.add("Taobao");
      names.add("Baidu");
      names.add("Sina");
        
      names.forEach(System.out::println);
   }
}

Nell'esempio, utilizzeremo System.out::println come metodo statico.

Esegui lo script sopra riportato, il risultato sarà:

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

Nuove caratteristiche di Java 8