tgoop.com/javapro_ir/4423
Create:
Last Update:
Last Update:
📌 کلاس های Record Class در جاوا
🔹 در جاوا ۱۴ به صورت Preview و از جاوا ۱۶ به صورت رسمی، قابلیتی به نام Record Class معرفی شد.
این قابلیت برای مواقعی است که میخواهیم یک کلاس فقط برای نگهداری دادهها (Data Carrier) بسازیم و نیازی به متدهای پیچیده یا تغییر وضعیت نداشته باشیم.
✅ چرا Record Class؟
در حالت عادی، وقتی یک کلاس دادهای مینویسیم، مجبوریم کلی کد Boilerplate بنویسیم:
تعریف فیلدها
constructor
getters
toString(), equals(), hashCode()
ولی با record همه اینها به صورت خودکار ساخته میشود.
📝 مثال ساده:
public record Person(String name, int age) { }
این قطعه کد معادل چیزی شبیه به زیر است:
public final class Person {
private final String name;
private final int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String name() { return name; }
public int age() { return age; }
@Override
public String toString() { return "Person[name=" + name + ", age=" + age + "]"; }
@Override
public boolean equals(Object o) { ... }
@Override
public int hashCode() { ... }
}
یعنی فقط با یک خط record، جاوا همهی این کدها را خودش میسازد.
✅ استفاده:
public class Main {
public static void main(String[] args) {
Person p1 = new Person("Ali", 25);
Person p2 = new Person("Ali", 25);
System.out.println(p1); // Person[name=Ali, age=25]
System.out.println(p1.equals(p2)); // true
}
}
⚡ نکات مهم:
1. کلاسهای Record immutable هستند (فیلدها final هستند).
2. نمیتوانید فیلد جدید (mutable) تعریف کنید.
3. میتوانید متد اضافه کنید، ولی هدف اصلی آن حمل دادهها است.
🛠 مثال پیشرفتهتر:
public record Rectangle(double width, double height) {
public double area() {
return width * height;
}
}
public class Main {
public static void main(String[] args) {
Rectangle r = new Rectangle(5, 3);
System.out.println("Area = " + r.area()); // Area = 15.0
}
}
📌 خلاصه:
کلاس های record راهی مدرن برای تعریف کلاسهای ساده و دادهمحور است که:
کد اضافی را حذف میکند.
کلاس را به صورت immutable میسازد.
برای DTOها، مدلهای دادهای، و Value Objectها بسیار مناسب است.
#کاربرـحرفهـای
🆔 @javapro_ir
🆔@group_javapro
BY برنامه نویسی جاوا | Java
Share with your friend now:
tgoop.com/javapro_ir/4423