কমপ্যাক্ট ক্যানোনিকাল কনস্ট্রাক্টর (Compact Canonical Constructor)
প্যারামিটার লিস্ট রিপিট না করেই রেকর্ড ফিল্ডগুলোকে ভ্যালিডেট (validate) এবং নরমালাইজ (normalize) করুন।
কোড তুলনা
✕ Java 16
public record Person(String name,
List<String> pets) {
// Full canonical constructor
public Person(String name,
List<String> pets) {
Objects.requireNonNull(name);
this.name = name;
this.pets = List.copyOf(pets);
}
}
✓ Java 16+
public record Person(String name,
List<String> pets) {
// Compact constructor
public Person {
Objects.requireNonNull(name);
pets = List.copyOf(pets);
}
}
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
কম রিপিটেশন (Less Repetition)
প্যারামিটার লিস্ট রিপিট করা বা ম্যানুয়ালি প্রতিটি ফিল্ড অ্যাসাইন করার প্রয়োজন নেই।
ভ্যালিডেশন
null চেক, রেঞ্জ ভ্যালিডেশন এবং ডিফেন্সিভ কপির জন্য পারফেক্ট।
সুস্পষ্ট উদ্দেশ্য
কমপ্যাক্ট সিনট্যাক্স বয়লারপ্লেটের (boilerplate) পরিবর্তে ভ্যালিডেশনের উপর জোর দেয়।
পুরনো পদ্ধতি
এক্সপ্লিসিট কনস্ট্রাক্টর ভ্যালিডেশন
আধুনিক পদ্ধতি
কমপ্যাক্ট কনস্ট্রাক্টর
JDK থেকে
16
কঠিনতা
মধ্যম
JDK সমর্থন
কমপ্যাক্ট ক্যানোনিকাল কনস্ট্রাক্টর (Compact Canonical Constructor)
উপলব্ধ
JDK 16 (মার্চ 2021) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
রেকর্ডগুলো একটি কমপ্যাক্ট ক্যানোনিকাল কনস্ট্রাক্টর ডিক্লেয়ার (declare) করতে পারে, যা প্যারামিটার লিস্ট এবং ফিল্ড অ্যাসাইনমেন্ট বাদ দেয়। আপনার ভ্যালিডেশন লজিক রান করার পর কম্পাইলার স্বয়ংক্রিয়ভাবে ফিল্ডগুলোতে প্যারামিটার অ্যাসাইন করে। এটি প্রিকন্ডিশন চেক, ডিফেন্সিভ কপি এবং নরমালাইজেশনের জন্য আদর্শ।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ