Miután megismerkedtünk a Lambda kifejezésekkel, folytassuk az utunkat a funkcionális interfészekkel amiknek a jellemzője, hogy csak egyetlen egy absztrakt metódussal rendelkeznek és a Lambda kifejezések típusát fogják majd meghatározni. A metódus neve bármi lehet, a lényeg hogy a szignatúrája kompatibilis legyen a Lambda kifejezéssel. Funkcionális interfészekkel már korábban is találkozhattunk a Java nyelvben (Runnable, Callable, Comparator), azonban a JDK8-at is kiegészítették jó pár generikus funkcionális interfésszel:
A beépített funkcionális interfészek mellett akár sajátot is létrehozhatunk és opcionálisan elláthatjuk a @FunctionalInterface annotációval, így a fordító azonnal szól ha esetleg több absztrakt metódust is defniáltunk volna az interface-ben.
A folytatásban a Stream API következik.
// Predicate<T> Predicate<Integer> p = x -> x > 5; System.out.println(p.test(10)); //true // Consumer<T> Consumer<Integer> c = i -> System.out.println(i); c.accept(111); //111 // Function<T,R> Function<Integer, String> f = i -> i > 10 ? "OK" : "NOT OK"; System.out.println(f.apply(100)); //OK // Supplier<T> Supplier<Integer> s = () -> 66; System.out.println(s.get()); //66 // UnaryOperator<T> // return használatakor a {}-t ki kell tenni UnaryOperator<Boolean> u = (bool) -> {return !bool;}; System.out.println(u.apply(false)); //true // BinaryOperator<T> BinaryOperator<Double> b = (Double d1, Double d2) -> d1 + d2; System.out.println(b.apply(11d, 22d)); //33.0A fenti kódrészleten látható Predicate funkcionális interfész egyetlen egy absztrakt metódust tartalmaz (test()), ami paraméterként Integer típust vár és a visszatérési értéke boolean. Érdemes megemlíteni, hogy a paraméter típusát nem kötelező definiálni, mivel a Type Inference feature segítségével a java compiler ezt képes kikövetkeztetni.
A beépített funkcionális interfészek mellett akár sajátot is létrehozhatunk és opcionálisan elláthatjuk a @FunctionalInterface annotációval, így a fordító azonnal szól ha esetleg több absztrakt metódust is defniáltunk volna az interface-ben.
A folytatásban a Stream API következik.
Nincsenek megjegyzések:
Megjegyzés küldése
Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.