Damryfbfnetsi হিসাবে আউট পয়েন্ট মন্তব্য, JLS §14.11 নিম্নলিখিত নোট আছে:
null
স্যুইচ লেবেল হিসাবে ব্যবহারের বিরুদ্ধে নিষেধাজ্ঞাগুলি এমন কোনও কোড লেখা থেকে বাধা দেয় যা কখনই কার্যকর করা যায় না। যদি switch
অভিব্যক্তিটি কোনও রেফারেন্স টাইপের হয়, String
বা বাক্সড আদিম টাইপ বা এনুম টাইপের হয় তবে এক্সপ্রেশনটি null
রান সময়টিতে মূল্যায়ন করলে রান-টাইম ত্রুটি ঘটবে । জাভা প্রোগ্রামিং ভাষার ডিজাইনারদের বিচারে, পুরো switch
বিবৃতিটি নিঃশব্দে এড়িয়ে যাওয়া বা default
লেবেলের পরে (যদি থাকে) বিবৃতিগুলি (যদি থাকে) কার্যকর করার চেয়ে এটি ভাল ফলাফল ।
(জোর আমার)
যদিও সর্বশেষ বাক্যটি ব্যবহারের সম্ভাবনাগুলি এড়িয়ে যায় case null:
, এটি যুক্তিসঙ্গত বলে মনে হয় এবং ভাষা ডিজাইনারদের উদ্দেশ্যগুলিতে একটি দৃষ্টিভঙ্গি দেয়।
যদি আমরা বরং বাস্তবায়নের বিশদটি লক্ষ্য করি তবে ক্রিশ্চিয়ান হুজারের এই ব্লগ পোস্টটিতে স্যুইচগুলিতে কেন null
অনুমতি দেওয়া হচ্ছে না তা সম্পর্কে কিছুটা অন্তর্নিহিত জল্পনা রয়েছে (যদিও এটি enum
স্যুইচের পরিবর্তে স্যুইচকে কেন্দ্র করে String
):
ফণা অধীনে, switch
বিবৃতিটি সাধারণত একটি টেবিলসুইচ বাইট কোডটি সংকলন করে। এবং "শারীরিক" যুক্তি switch
পাশাপাশি এর কেসগুলি হয় int
। স্যুইচ করার জন্য অন্তর্নির্ম মানটি পদ্ধতিটি প্রয়োগ করে নির্ধারিত হয় Enum.ordinal()
। অধ্যক্ষগুলি শূন্য থেকে শুরু হয়।
তার মানে, ম্যাপিং null
করা 0
ভাল ধারণা হবে না। প্রথম এনাম মানের একটি স্যুইচটি শূন্য থেকে পৃথক হতে পারে। এনামদের 1 টি অর্ডিনাল গণনা শুরু করা ভাল ধারণা হতে পারে তবে তবে এটির মতো সংজ্ঞা দেওয়া হয়নি, এবং এই সংজ্ঞাটি পরিবর্তন করা যায় না।
যদিও String
সুইচ ভিন্নভাবে প্রয়োগ করা হয় , enum
সুইচ প্রথম এসে কিভাবে একটি রেফারেন্স ধরনের উপর সুইচিং আচরণ করা উচিত যখন রেফারেন্স জন্য চিহ্ন রেখে null
।