oca java 8 se programmer i - centro studi ulisse ... · fondamenti di java usare i data type java...
TRANSCRIPT
OCA JAVA 8 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL’ANNO
CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA)
Tel. Fax. 081.19970299 - 339.2365416 - 349.4152010 E-mail: [email protected] - www.centrostudiulisse.it
SOMMARIO
Fondamenti di Java
Usare i Data Type Java
Usare operatori e costrutti decisionali
Creare ed usare array
Usare i costrutti ciclici
Lavorare con i metodi e l’incapsulamento
L’ereditarietà
Eccezioni
API Java – Time e Date
Le espressioni Lambda
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
2
LE ESPRESSIONI LAMBDA
Metodi anonimi
Definiti là dove devono essere usati
Sintassi molto semplice:
(argomenti) corpo
(argomenti) è una lista di argomenti (uno o più)
corpo è una singola espressione semplice o un blocco di
codice racchiuso tra parentesi graffe
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
3
Esempi:
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
4
LE ESPRESSIONI LAMBDA
(int a, int b) a+b
//restituisce la somma di due interi
(String a, String b) {System.out.println(a+” “+b);}
//effettua la stampa della concatenazione di due stringhe intervallate da uno spazio
(a, b) a+b
//utilizza la type inference
Type Inference
I tipi degli argomenti vengono omessi
L’espressione verrà eseguita considerando il tipo attuale
(reale) delle variabili passate come argomenti
Nell’esempio precedente se gli argomenti sono int verrà
eseguita un’addizione, se gli argomenti sono String verrà
eseguita una concatenazione
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
5
LE ESPRESSIONI LAMBDA
Interfacce funzionali
Interfacce con un unico metodo astratto (possono avere
altri metodi)
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
6
LE ESPRESSIONI LAMBDA
public interface ActionListener extends EventListener
{
public void actionPerformed(ActionEvent e);
}
……..
ActionListener al = (ActionEvent e) -> System.out.println(e);
Espressioni lambda e interfacce funzionali
Le espressioni lambda non sono altro che implementazioni dei metodi
dichiarati nelle interfacce funzionali
Si possono omettere tutti i dettagli implementativi che il compilatore può
desumere dall’interfaccia:
Tipi dei parametri
return
parentesi graffe
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
7
LE ESPRESSIONI LAMBDA
Espressioni lambda e interfacce funzionali
Se il metodo da implementare accetta più parametri è obbligatorio
metterli tra parentesi nell’espressione lambda che lo implementa
Se il metodo da implementare non accetta parametri si usano le parentesi vuote
Non si possono utilizzare variabili già dichiarate altrove nel metodo in cui l’espressione viene richiamata (sarebbe una duplicazione)
Per usare un return bisogna utilizzare un blocco delimitato da parentesi graffe e terminante con un punto e virgole (all’interno delle graffe)
Il tipo restituito dall’espressione deve essere quello restituito dal metodo dichiarato nell’interfaccia
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
8
LE ESPRESSIONI LAMBDA
Espressioni lambda e java.util.function.Predicate
java.util.function.Predicate
interfaccia aggiunta in Java 8
un solo metodo di nome test: prende un oggetto qualunque come
argomento e restituisce un boolean
elimina la necessità di scrivere un’interfaccia apposita per ogni
applicazione
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
9
LE ESPRESSIONI LAMBDA
Espressioni lambda e java.util.function.Predicate
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
10
LE ESPRESSIONI LAMBDA
public void faiSuData(ArrayList<Data> dataList, Predicate<Data> p){
Iterator<Data> i = dataList.iterator();
while(i.hasNext()) {
if(p.test(i.next())) { … fa qualcosa … }
}
}
…
Predicate<Data> p = new Predicate<Data>(){
public boolean test(Data d){
return (risultato di un test su d);
}
};
….
faiSuData(dataList, p);
L’alternativa è:
faisuData(dataList, d risultato di un test su d);
DOMANDE?
Materiale redatto dal Prof. Fausto Dell'Anno in collaborazione col Centro Studi Ulisse Formazione e consulenza – © Riproduzione riservata
11