METHOD REFERENCE

INTRODUZIONE

java-logoIl riferimento a un metodo è una caratteristica presente in Java a partire dalla versione otto, che ci consente di riferirci a un metodo con il suo nome senza tuttavia provocarne direttamente l’invocazione. Sono simili alle lambda expression perché utilizzano le Functional interface per il loro funzionamento, inoltre quando vengono utilizzati generano una istanza di una interfaccia funzionale.

METHOD REFERENCE PER METODI STATICI

Per prima cosa introduciamo nel nostro programma una interfaccia funzionale. Introduciamo una classe che contiene due metodi compatibili con l’interfaccia funzionale, il primo metodo dal nome contiene verifica se una stringa è contenuta in un’altra tramite il metodo indexOf. Il metodo ritorna un boolean che ci dice se la sottostringa è contenuta (true) o no (false) nella stringa principale. Il secondo metodo verifica se due stringhe sono uguali tramite il metodo equals della classe Object.

metodi statici

Vediamo la classe di test.

Test class

All’inizio del metodo main invochiamo il metodo prova che si trova nella stessa classe. Il metodo MyClass::contiene, compatibile con l’interfaccia funzionale è un riferimento a un metodo statico, viene passato alla variabile mi del metodo prova. Viene invocato il metodo contiene di MyClass attraverso l’interfaccia funzionale. La parte più importante di tutto il codice sono i riferimenti indiretti ai metodi statici di MyClass, invocati attraverso una interfaccia funzionale.

METHOD REFERENCE PER METODI DI ISTANZA

Riprendiamo l’esempio precedente con la differenza che questa volta i metodi non sono statici ma metodi di istanza.

metodi di istanza

Vediamo il main.

main

Il metodo controlla invocato tramite la variabile mi provoca la chiamata indiretta ai metodi contiene e uguali di MyClass.

METHOD REFERENCE PER I COSTRUTTORI

Costruttori

Introduciamo l’interfaccia funzionale che ha gli stessi parametri del costruttore e ritorna un oggetto di tipo MyClass. Vediamo la classe di test. Tramite un riferimento indiretto al costruttore siamo in grado di creare istanze della classe MyClass.

Classe di Test

LINK AI POST PRECEDENTI

IL LINGUAGGIO JAVA

LINK AL CODICE SU GITHUB

GITHUB

ESECUZIONE DEL CODICE DI ESEMPIO

  • Scaricare il codice da GITHUB, lanciare il file JAR con il seguente comando in Visual Studio Code, posizionandosi nella directory contenente il JAR.

        java -jar –enable-preview CorsoJava.jar

  • Oppure mettere in esecuzione il main che si trova nel file CorsoJava.java.