7,540
edits
Changes
Java-mis
,no edit summary
[[ Java Enum ]]<br>
[[ Java Lamnda ]]
=Java λ=
==List-forEach()==
(parameter1, parameter2) -> { code block }
</pre>
{{warning|Ezek a paraméterek nem a "külső", funkcionális interfészt implementáló java osztályt meghívó metódus bemeneti paraméterei, hanem belső változok. A '''forEach''' esetén pl ezek a lista elemek}}
<br><br>
Az előző példa Lambda alakja a következő lenne:
items.forEach(item->System.out.println(item));
</source>
{{note|Az item kívülről nézve nem értelmezhető, szemben egy "normál" függvény hívással, ahol kintről adunk át neki paramétereket. Tehát ez NEM egy külső paraméter. Értelmet csak a forEach belsejében nyer. A lambad kifejezés csak egy állapot nélküli transzformációs függvény, ami inputnak megkapja az '''item'' nevű változót és csinál vele valamit:}}
<br>
Ami nem csinál mást, mint visszaadja a kapott string hosszát. Kívülről nézve a var1 nem értelmezhető, az mindig a lamdát futtató osztály egy osztály változója, kívülről nem megadható.
{{warning|Itt a 'var1' nem kívülről jövő, a metódus meghívásakor előállt paraméter! Ez a 'MyLambadClass' belső változója, vagyis ide kívülről nem tudunk változót betolni a metódus meghívásakor}}
Tehát, ahogy ezt majd látni fogjuk a CompletionSage-nél, a 'FunctionalInterface'-t futtató osztályt kell előre feltölteni minden olyan változóval, amire szükség van a lamda kifejezés futtatására. A fenti példákban ez egyrészt a 'MyLambadClass', vagy az első példában a ArrayList osztályok.
* A 'MyLambadClass' konstruktorában adtuk át azt a string-et, amit a 'processVariable' feldolgoz, attól függetlenül, hogy milyen lamda kifejezéssel implementáljuk a funkcionális interfészét.
* Az ArrayList pedig belső változóiban tárolja
<br>
===Mi is ez?===
* '''CompletionStage Interface''': ** ezek egymás után futtatott stage-ek, ezért hívják "Comletion"-nek. Mikor az egyik stage véget ér, potenciálisan elindít egy másik "CompletionStage"-et és így tovább, egymásba láncolva. Minden metódusa egy másik CompletionStage-et ad vissza. De ez csak egy interfész, vmilyen implementációját kell használni. **java.util.concurrent.CompletionStage<T> interface represents a commutation task (either synchronous or asynchronous). As all methods declared in this interface return an instance of CompletionStage itself, multiple CompletionStages can be chained together in different ways to complete a group of tasks.
* '''CompletableFuture<T> implements CompletionStage<T> and Future<T>''': The static factory methods in this class are the starting points for executing tasks.
.thenCompose(var2 -> method3(var2))
</source>
<hr>
<br>
<br>
=Java Method Reference and Constructor Reference=
https://www.amitph.com/java-method-and-constructor-reference/
==Method Reference==
==Constructor Reference==
=Stream=
https://stackify.com/streams-guide-java-8/
..TODO..