ডিফল্ট ছাড়াই সম্পূর্ণ সুইচ
কম্পাইলার যাচাই করে যে সমস্ত সিল করা সাবটাইপ কভার করা হয়েছে — কোন ডিফল্টের প্রয়োজন নেই।
কোড তুলনা
✕ Java 8
// Must add default even though
// all cases are covered
double area(Shape s) {
if (s instanceof Circle c)
return Math.PI * c.r() * c.r();
else if (s instanceof Rect r)
return r.w() * r.h();
else throw new IAE();
}
✓ Java 21+
// sealed Shape permits Circle, Rect
double area(Shape s) {
return switch (s) {
case Circle c ->
Math.PI * c.r() * c.r();
case Rect r ->
r.w() * r.h();
}; // no default needed!
}
এই কোডে সমস্যা দেখছেন? আমাদের জানান।
কেন আধুনিক পদ্ধতি ভালো
কম্পাইল-সময় নিরাপত্তা
একটি নতুন সাবটাইপ যোগ করুন এবং কম্পাইলার আপডেট করার জন্য প্রতিটি জায়গা দেখায়।
কোন ডেড কোড নেই
বাগ মাস্ক করে এমন কোনো ডিফল্ট শাখা নেই।
বীজগণিতের প্রকার
জাভাতে সিল করা + রেকর্ড + সম্পূর্ণ সুইচ = সঠিক ADTs।
পুরনো পদ্ধতি
বাধ্যতামূলক ডিফল্ট
আধুনিক পদ্ধতি
সিল করা নিঃশেষিততা
JDK থেকে
21
কঠিনতা
মধ্যম
JDK সমর্থন
ডিফল্ট ছাড়াই সম্পূর্ণ সুইচ
উপলব্ধ
JDK 21 LTS (সেপ্টেম্বর 2023) থেকে ব্যাপকভাবে উপলব্ধ
কীভাবে কাজ করে
একটি সিল করা টাইপের উপর স্যুইচ করার সময়, কম্পাইলার সমস্ত সম্ভাব্য সাবটাইপগুলি জানে এবং প্রতিটি কেস পরিচালনা করা হয়েছে তা যাচাই করে। আপনি যদি একটি নতুন সাব-টাইপ যোগ করেন, কম্পাইলার এখন অসম্পূর্ণ প্রতিটি সুইচকে ফ্ল্যাগ করে।
সম্পর্কিত ডকুমেন্টেশন
প্রমাণ