[[oktatas:programozás:java|< Java]]
====== Java - Record ======
* **Szerző:** Sallai András
* Copyright (c) 2023, Sallai András
* Szerkesztve: 2023
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Bevezetés =====
A Java 14-ben bevezették a Record kulcsszót.
Nem változtatható adatok, objektumok közötti mozgatására szokás
használni.
===== A record nélkül =====
Hozzunk létre egy Employee osztályt, a következő követelményekkel:
* private mezők, final módosítókkal
* minden mező beállítható a konstruktoron keresztül
* felülírjuk az equals() metódust
* felülírjuk a hashCode() metódust
* felülírjuk a toString() metódust
class Employee {
private final String name;
private final String city;
private final double salary;
public Employee(String name, String city, double salary) {
this.name = name;
this.city = city;
this.salary = salary;
}
@Override
public int hasCode() {
return Objects.hash(name, city, salary);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}else if (!(obj instanceof Employee) {
return false;
}else {
Employee emp = (Employee) obj;
return Objects.equals(name, emp.name)
&& Objects.equals(city, emp.city)
&& Objects.equals(salary, emp.salary
}
}
@Override
public String toString() {
return "Employee [name=" + name +
", city=" + city +
", salary=" + salary + "]";
}
// Ide jönnek a szabványos elérők
}
===== A record =====
Most nézzük meg a fenti kódot "record"-dal:
public record Employee (String name, String city, double salary) {}
===== Konstruktor =====
A record létrehoz egy konstruktort, de kiegészíthetjük más konstruktorral, aminek más aláírása lesz.
public record Employee (String name, String city, double salary) {
public Employee(String name) {
Objects.requireNonNull(name);
}
}
===== Statikus tagok =====
A record-ba felvehetünk statikus adattagot és metódust is.
public record Employee (String name, String city, double salary) {
public static double MAX_SALARY=500;
}