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));
- 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
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));
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));
}
istnieje również możliwość łączenia predykatów:
-negaca p1.negate()
-koniunkcja p1.and(p2)
-alternatywa p1.or(p2)
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));
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
Prześlij komentarz