PROGRAMMAZIONE AVANZATA JAVA E C

PROGRAMMAZIONE
AVANZATA JAVA E C
Massimiliano Redolfi
Lezione 6: Lambda etc…
Lambda Expression
jExamples_Lambda
docs.oracle.com
Lambda Expression
jExamples_Lambda
contesto
(parametri) -> { codice } + contesto
Lambda Expression:
+ blocco di codice
+ parametri
Closure
+ variabili libere (contesto)
Method References
jExamples_Lambda
object::instanceMethod
Class::staticMethod
Class::instanceMethod
System.out::println
x -> System.out.println(x)
Math::sqrt
x -> Math.sqrt(x)
String::compare
(x,y) -> x.compare(y)
Reflection
Reflection
La possibilità di un programma di analizzare(introspection) e modificare la sua
stessa struttura e comportamento run-time.
jExamples_Reflection
Reflection: JavaCompilerUtils in action!
Source
Source
Source
jExamples_Reflection2
System Java
Comilers
Diagnostic
Compilation Task
task.call()
Original
App
+
New
New
New
Class
Class
Class
Result
Design
Patterns
Singleton
Singleton
Un Singleton è un design-pattern che ha lo scopo di
garantire la presenza di un’unica istanza di una classe
all’interno di una applicazione
Ingredienti:
- una classe
- un membro privato statico della stesso tipo della classe contenitore
- un costruttore privato della classe (che può non far nulla)
- un metodo statico (getInstance) che restituisce l’istanza della classe
Singleton
blocco della costruzione
esplicita
lazy initialization
Singleton vs Static Class
Perché usare Singleton
può implementare interfacce
può essere passato come oggetto ad un metodo
può essere derivato da una classe base
può implementare una logica interna di creazione dell’istanza
Quando usare Static Class
Quando si vuole implementare una semplice libreria di funzioni
enum
non solo liste…