This shows you the differences between two versions of the page.
poo:breviare:breviar-03 [2025/10/16 12:25] stefanel.turcu |
poo:breviare:breviar-03 [2025/10/16 12:26] (current) stefanel.turcu [Extra: Tipuri speciale în Java: enum și record] |
||
---|---|---|---|
Line 426: | Line 426: | ||
**Observații:** | **Observații:** | ||
- | * Valorile `LUNI`, `MARTI`, etc. sunt constante (publice, statice și imutabile). | + | * Valorile //LUNI//, //MARTI//, etc. sunt constante (publice, statice și imutabile). |
* Se folosesc frecvent pentru a face codul mai clar și mai sigur (în locul valorilor numerice sau string). | * Se folosesc frecvent pentru a face codul mai clar și mai sigur (în locul valorilor numerice sau string). | ||
Line 450: | Line 450: | ||
**Ce oferă automat un record:** | **Ce oferă automat un record:** | ||
* constructor pentru toți parametrii (`new Punct(int x, int y)`) | * constructor pentru toți parametrii (`new Punct(int x, int y)`) | ||
- | * metode `x()` și `y()` pentru acces la date (getters) | + | * metode //x()// și //y()// pentru acces la date (getters) |
- | * metode `equals()`, `hashCode()` și `toString()` generate automat | + | * metode //equals()//, //hashCode()// și //toString()// generate automat |
- | * toate câmpurile sunt `private` și `final` → obiectul este imutabil | + | * toate câmpurile sunt //private// și //final// → obiectul este imutabil |
**Avantaj:** | **Avantaj:** | ||
- | `record` reduce semnificativ codul boilerplate comparativ cu o clasă clasică. | + | **record** reduce semnificativ codul boilerplate comparativ cu o clasă clasică. |
**Exemplu echivalent (clasă obișnuită):** | **Exemplu echivalent (clasă obișnuită):** | ||
Line 481: | Line 481: | ||
**Când să folosești un record:** | **Când să folosești un record:** | ||
* Când vrei un obiect simplu, imutabil, care doar conține date. | * Când vrei un obiect simplu, imutabil, care doar conține date. | ||
- | * Când nu ai nevoie de moștenire (un `record` nu poate extinde altă clasă). | + | * Când nu ai nevoie de moștenire (un //record// nu poate extinde altă clasă). |