This shows you the differences between two versions of the page.
poo-ca-cd:laboratoare:java-features [2025/01/07 22:09] dragos.dragan1403 [var] |
poo-ca-cd:laboratoare:java-features [2025/01/08 10:20] (current) dragos.dragan1403 [flatMap și groupingBy] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Laboratorul 11: Java features ===== | + | ===== Laboratorul 11: Streams. Java features ===== |
==== Obiective ==== | ==== Obiective ==== | ||
- | * înțelegerea conceptelor de expresii lambda și de streams | ||
* familiarizarea cu metode default și cu metode statice în interfețe | * familiarizarea cu metode default și cu metode statice în interfețe | ||
- | * utilizarea de structuri sintactice introduse începând cu Java 8 (var) | + | * înțelegerea conceptelor de expresii lambda |
+ | * utilizare streams :-) | ||
+ | |||
+ | <hidden> | ||
+ | * utilizarea de structuri sintactice introduse începând cu Java 8 (var) | ||
+ | </hidden> | ||
==== Metode statice și metode default în interfețe ==== | ==== Metode statice și metode default în interfețe ==== | ||
Începând cu Java 8, putem implementa metode în cadrul interfețelor, unde, în mod clasic, avem doar metode neimplementate (abstracte). Mai precis, noi putem să implementăm trei tipuri de metode: default (non-statice), statice, iar începând cu Java 9 și private. | Începând cu Java 8, putem implementa metode în cadrul interfețelor, unde, în mod clasic, avem doar metode neimplementate (abstracte). Mai precis, noi putem să implementăm trei tipuri de metode: default (non-statice), statice, iar începând cu Java 9 și private. | ||
Line 223: | Line 227: | ||
</code> | </code> | ||
- | Interfața [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html | Function<T, R>]] expune și metode care pot înlănșui alte operașii de tipul Function. | + | Interfața [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html | Function<T, R>]] expune și metode care pot înlănțui alte operații de tipul Function. |
* [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html#andThen(java.util.function.Function) | andThen(Function<T, R>)]] - functia data ca parametru este executata dupa cea la care este apelata metoda | * [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html#andThen(java.util.function.Function) | andThen(Function<T, R>)]] - functia data ca parametru este executata dupa cea la care este apelata metoda | ||
* [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html#compose(java.util.function.Function) | compose(Function<T, R>)]] - functia data ca parametru este executata inainte de cea la care este apelata metoda | * [[https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/function/Function.html#compose(java.util.function.Function) | compose(Function<T, R>)]] - functia data ca parametru este executata inainte de cea la care este apelata metoda | ||
Line 268: | Line 272: | ||
<code java> | <code java> | ||
IntStream.range(1, 4) | IntStream.range(1, 4) | ||
- | .forEach(System.out::println); | + | .forEach(System.out::println); // 1 2 3 |
</code> | </code> | ||
Line 324: | Line 328: | ||
String[] myNewArray = Arrays.stream((String[])myArray.toArray()) | String[] myNewArray = Arrays.stream((String[])myArray.toArray()) | ||
.filter(x -> x.length() > 4) | .filter(x -> x.length() > 4) | ||
- | .toArray(String[]::new); | + | .toArray(String[]::new); // "monkey", "elephant", "zebra" |
</code> | </code> | ||
Line 396: | Line 400: | ||
</code> | </code> | ||
- | <hidden> | ||
==== var ==== | ==== var ==== | ||
În Java 10, ''var'' a fost întrodus pentru a face munca unui programator mai lejeră și acesta poate fi folosit doar în interiorul blocurilor de cod (nu poate fi folosit în declararea câmpurilor unei clase sau la semnătura unei metode). | În Java 10, ''var'' a fost întrodus pentru a face munca unui programator mai lejeră și acesta poate fi folosit doar în interiorul blocurilor de cod (nu poate fi folosit în declararea câmpurilor unei clase sau la semnătura unei metode). | ||
Line 460: | Line 463: | ||
*/ | */ | ||
+ | <hidden> | ||
==== Limbajul Kotlin ==== | ==== Limbajul Kotlin ==== | ||
Kotlin reprezintă un limbaj de programare orientat pe obiecte, creat încât să fie interoperabil cu Java, mai precis Kotlin rulează în același mediu cu Java (în JVM), astfel noi putem să avem un proiect în care să avem clase scrise în Java și clase scrise în Kotlin, o practică care este întâlnită în proiecte din industrie (backend, Android). | Kotlin reprezintă un limbaj de programare orientat pe obiecte, creat încât să fie interoperabil cu Java, mai precis Kotlin rulează în același mediu cu Java (în JVM), astfel noi putem să avem un proiect în care să avem clase scrise în Java și clase scrise în Kotlin, o practică care este întâlnită în proiecte din industrie (backend, Android). |