7,540
edits
Changes
Java-mis
,→Példa 2: saját implementáció
}
</source>
A processVariable belsejében meghívja a funkcionális interfész '''apply()''' metódusát. (Definiálhattunk volna magunknak saját funkcionális interfész típust, mi most itt egy gyári típust használunk). <source lang="java">package java.util.function; import java.util.Objects; @FunctionalInterfacepublic interface Function<T, R> { R apply(T var1); <<<<<<<<<<<---------------------------ez itt a lényeg!!! default <V> Function<V, R> compose(Function<? super V, ? extends T> before) { Objects.requireNonNull(before); return (v) -> { return this.apply(before.apply(v)); }; } default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) { Objects.requireNonNull(after); return (t) -> { return after.apply(this.apply(t)); }; } static <T> Function<T, T> identity() { return (t) -> { return t; }; }}</source>Láthatjuk, hogy egy implementálandó metódusa van a "Function" interfésznek, ami T típust vár és R típus ad vissza. Tehát ez egy generikus interfész, és bármi is legyen az implementáció, ott majd meg kell mondani, hogy a pl T=String és R=Intger. De az hogy a Function az egy generikus interfész (generic) annak semmi köze ahhoz hogy ő egy Funkcionális interfész. <br><br> Az apply-nak átadja a saját osztály változóját, majd az apply által visszaadott Integer-t kiírja a sysout-ra. Az hogy az apply belsejében hogy áll elő az Ingerer és hogy mit csinál a bemenő String paraméterrel teljes egészében az apply implementációra van bízva.
<br>
Nézzünk meg egy lehetséges implementációt:
<br>
<br>
==Példa 3: CompletionStage.thenCompose()==