ডেটা ক্লাসের জন্য রেকর্ড (Records for data classes)
একটি সিঙ্গেল লাইন ইমিউটেবল ডেটা ক্যারিয়ারের (immutable data carriers) জন্য 30+ লাইনের বয়লারপ্লেটকে প্রতিস্থাপন করে।
কোড তুলনা
✕ Java 8
public class Point {
private final int x, y;
public Point(int x, int y) { ... }
public int getX() { return x; }
public int getY() { return y; }
// equals, hashCode, toString
}
✓ Java 16+
public record Point(int x, int y) {}
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
এক-লাইন ডেফিনিশন (One-line Definition)
একটি সিঙ্গেল লাইন কনস্ট্রাক্টর, গেটার্স (getters), equals, hashCode, toString -কে প্রতিস্থাপন করে।
ডিফল্টরূপে ইমিউটেবল (Immutable by default)
সব ফিল্ড ফাইনাল (final) – কোনো সেটার ফুটগান (setter footguns) নেই।
প্যাটার্ন-ফ্রেন্ডলি (Pattern-friendly)
রেকর্ডগুলো সুইচ (switch) এবং instanceof-এ ডিস্ট্রাকচারিং প্যাটার্নগুলোর (destructuring patterns) সাথে কাজ করে।
পুরনো পদ্ধতি
ভার্বোস POJO
আধুনিক পদ্ধতি
রেকর্ড
JDK থেকে
16
কঠিনতা
প্রাথমিক
JDK সমর্থন
ডেটা ক্লাসের জন্য রেকর্ড (Records for data classes)
উপলব্ধ
JDK 16 (মার্চ 2021) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
রেকর্ডগুলো স্বয়ংক্রিয়ভাবে কনস্ট্রাক্টর, অ্যাক্সেসর (x(), y()), equals(), hashCode(), এবং toString() জেনারেট করে। এগুলো ডিজাইনগতভাবে ইমিউটেবল এবং DTOs, ভ্যালু অবজেক্ট (value objects) এবং প্যাটার্ন ম্যাচিংয়ের জন্য আদর্শ।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ