Index
Interfacce notevoli
Sono classi notevoli anche Iterator
oss
Clonable non crea una deep copy ma solo una shallow copy Python Alias, Shallow and Deep copy
Altra interfaccia utile:
Interfaccia Runnable
interfaccia che implementa un solo metodo run()
che permette di creare thread che permette di eseguire un metodo in modo separato dal resto del programma
Le enumerazioni possono estendere le interfacce
metodo clone()
clone()
appartiene all’interfaccia cloneable
e permette di fare una shallow copy di un oggetto, questo significa che quando l’oggetto ha come capi dei riferimenti (puntatori) crea dei problemi (ovvero non viene effettuata la creazione di un nuovo riferimento, quindi i riferimenti dell’oggetto originale e della copia punteranno allo stesso riferimento )
oss
x.clone() != x
sarà sempre vero
Utilizzo
clone()
per esse utilizzati deve essere implementato oppure verrà ritornato l’erroreCloneNotSupportedException
Sovrascrivere clone()
Classi top level
- Non sono contenute in altre classi
- Questo tipo di classi richiede un file .java dedicato con lo stesso nome della classe che esso contiene
Classic annidate (nested class)
- classi all’interno di altre classi
Esistono 2 tipi:
-
static
-
non-static
in questo caso vengono dette classi interne (inner class) -
Prima di poter creare un oggetto della classe interna è necessario istanziare la classe esterna (top-level) che la contiene
-
Ciascuna classe interna, infatti, ha un riferimento implicito all’oggetto della classe che la contiene
-
Dalla classe interna è possibile accedere a tutte le variabili e a tutti i metodi della classe esterna
-
Come tutti i membri di una classe, le classi interne possono essere dichiarate public, protected o private
Esempio:
Static nested class
Classi anonime
- classi senza nome che permettono di implementare un interfaccia o di estendere una classe
Syntax:
Esempio:
Interfacce funzionali
- In Java 8 è disponibile una nuova annotazione
@FunctionalInterface
- L’annotazione garantisce che l’interfaccia sia dotata esattamente di un solo metodo astratto
Esempio:
Espressioni Lambda
- Presenti da java 8
- Tali espressioni creano oggetti anonimi assegnabili a riferimenti a interfacce funzionali compatibili con l’intestazione (input/output) della funzione creata.
Syntax:
Tip
- Il tipo dei parametri si può omettere
- return si può omettere
- se c’e un solo parametro in input si possono omettere le tonde
- le graffe si possono omettere solo se il cose block è du una sola riga
How to make and run a lambda object:
Example:
It can be used in a for
Altri esempi: