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…