[[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; }