Programación

1º DAM/DAW - Curso 2024-2025

User Tools

Site Tools


apuntes:lambdas

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
apuntes:lambdas [2023/05/28 11:57] – [Expresiones lambda] Santiago Faciapuntes:lambdas [2023/05/28 12:04] (current) – [Referencias a métodos] Santiago Faci
Line 2: Line 2:
  
 ==== Interfaces funcionales ==== ==== Interfaces funcionales ====
 +
 +  * Las interfaces funcionales son interfaces que poseen un único método abstracto (sin implementar)
 +  * Aparecen por primera vez en Java 8
 +  * Están especialmente preparadas para usarse con expresiones lambda
 +  * Pueden tener definidos métodos por defecto (tienen implementación)
 +
 +En Java existen una serie de interfaces funcionales ya definidas especialmente útiles
 +
  
   * **Predicate**: Evalua una condición booleana   * **Predicate**: Evalua una condición booleana
Line 13: Line 21:
   * **BiPredicate**: Versión de //Predicat//e para dos argumentos   * **BiPredicate**: Versión de //Predicat//e para dos argumentos
   * **BiFunction**: Versión de //Function// para dos argumentos   * **BiFunction**: Versión de //Function// para dos argumentos
 +
 +<code java>
 +Predicate<String> checkEmpty = (value) -> value.isEmpty();
 +System.out.println(checkEmpty.test("hola")); 
 +System.out.println(checkEmpty.test(""));
 +</code>
 +
 +Pero también podemos crear las nuestras propias:
 +
 +<code java>
 +@FunctionalInterface
 +public interface SayMyName {
 +  void say(String name); 
 +}
 +</code>
 +
 +
 +
 +
 +
 ==== Expresiones lambda ==== ==== Expresiones lambda ====
  
Line 20: Line 48:
   * Permiten expresar las instancias de interfaces funcionales de una forma compacta   * Permiten expresar las instancias de interfaces funcionales de una forma compacta
   * Su uso está especialmente extendido en el uso de Streams, donde se pueden utilizar de forma que el código queda mucho más compacto y fácil de entender   * Su uso está especialmente extendido en el uso de Streams, donde se pueden utilizar de forma que el código queda mucho más compacto y fácil de entender
 +  * Cuando usamos una tenemos que imaginarnos que estamos implementando el código necesario para ejecutar luego el método que tiene por defecto asignada esa interface
  
 La sintaxis es: La sintaxis es:
Line 33: Line 62:
  
 // Para crear un Predicate que permita evaluar una colección sobre un objeto // Para crear un Predicate que permita evaluar una colección sobre un objeto
 +Animal unAnimal = new Animal(. . . .)
 +
 Predicate<Animal> pesoMayorQue10 = (animal) -> animal.getPeso() > 10;  Predicate<Animal> pesoMayorQue10 = (animal) -> animal.getPeso() > 10; 
 pesoMayorQue10.test(unAnimal); // true/false pesoMayorQue10.test(unAnimal); // true/false
Line 74: Line 105:
 ---- ----
  
-(c) 2023 Santiago Faci+(c) 2019-{{date>%Y}} Santiago Faci
apuntes/lambdas.1685275071.txt.gz · Last modified: 2023/05/28 11:57 by Santiago Faci