JAVAPRO_IR Telegram 4423
📌 کلاس های 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
👍71



tgoop.com/javapro_ir/4423
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

How to create a business channel on Telegram? (Tutorial) Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. Just at this time, Bitcoin and the broader crypto market have dropped to new 2022 lows. The Bitcoin price has tanked 10 percent dropping to $20,000. On the other hand, the altcoin space is witnessing even more brutal correction. Bitcoin has dropped nearly 60 percent year-to-date and more than 70 percent since its all-time high in November 2021. Read now The main design elements of your Telegram channel include a name, bio (brief description), and avatar. Your bio should be:
from us


Telegram برنامه نویسی جاوا | Java
FROM American