Interfejsy funkcjonalne wprowadzone w Java 8

Interfejs funkcjonalny jest interfejsem posiadającym przynajmniej jedną metodę abstrakcyjną (single abstract method). W omawianym interfejsie możesz zdefiniować wiele metod abstrakcyjnych i statycznych. Przykład Interfejsu funkcjonalnego:

java.util.function jest pakietem, który zawiera predefiniowane interfejsy.

4.1 Predicate 

Funkcja matematyczna, która zwraca wartość prawda fałsz. w zależności czy warunek zostanie spełniony lub nie. Czyli jest to metoda zwracająca wartość boolean.
- Predicate jest interfejsem funkcjonalnym wprowadzonym od Java 1.8
- interfejs zawiera tylko jedną metodę test(), która przyjmuje jedną wartość, wykonuje sprawdzenie na podstawie przesłanego warunku i  zwraca wartość boolean.


package functional.staticMethods;
import java.util.function.Predicate;

przykład implementacji interfejsu funkcjonalnego Predicate  przyjmującego parametr generyczny typu Integer

public class PredicateSampleInt {
  public static void main(String[] args) {
    Predicate<Integer> p = i -> i>10;
    System.out.println(p.test(100));
    System.out.println(p.test(9)); 
  }

inny przykład implementacji Predicate przyjmującego parametr generyczny typu String

public class PredicateSampleString {
  public static void main(String[] args) {
    Predicate<String> p = s -> s>5;
    System.out.println(p.test("Ala ma kota));
    System.out.println(p.test("Kot)); 
  }

inny przykład implementacji Predicate przyjmującego parametr generyczny typu Collection

public class PredicateSampleString {
  public static void main(String[] args) {
ArrayList a = new ArrayList<>{};
a.add("a");
    Predicate<Collection> p = c-> c.isEmpty();
    System.out.println(p.test(p(1));
    System.out.println(p.test(3)); 
  } 

istnieje również możliwość łączenia predykatów:
-negaca p1.negate()
-koniunkcja p1.and(p2)
-alternatywa p1.or(p2)




src: https://learn.oracle.com/ols/course/prepare-for-java-se-certification/82508/79482/124478

Komentarze

Popularne posty