আমি বুঝতে পারি যে সংকলকটির একটি স্যুইচ সংকলন করার জন্য সংকলন সময়ে এক্সপ্রেশনটি জানা দরকার, তবে কেন Foo.BA_ ধ্রুবক নয়?
ক্ষেত্রগুলির সূচনা হওয়ার পরে কার্যকর হওয়া কোনও কোডের দৃষ্টিকোণ থেকে তারা স্থির থাকলেও , জেএলএস দ্বারা প্রয়োজনীয় অর্থে তারা সংকলনের সময় নয় ; দেখতে §15.28 স্থায়ী প্রকাশ একটি স্পেসিফিকেশন জন্য ধ্রুবক অভিব্যক্তি 1 । এটি §4.12.4 কে চূড়ান্ত ভেরিয়েবলগুলি বোঝায় যা নীচে "ধ্রুবক পরিবর্তনশীল" সংজ্ঞায়িত করে:
আমরা আদিম প্রকারের বা স্ট্রিং প্রকারের একটি পরিবর্তনশীল বলি, এটি চূড়ান্ত এবং একটি সংকলন-সময় ধ্রুবক অভিব্যক্তি (§15.28) একটি ধ্রুবক ভেরিয়েবলের সাথে আরম্ভ হয়। কোনও চলক একটি ধ্রুবক পরিবর্তনশীল কিনা বা শ্রেণীর সূচনা (§12.4.1), বাইনারি সামঞ্জস্যতা (§13.1, §13.4.9) এবং নির্দিষ্ট অ্যাসাইনমেন্ট (assign16) এর সাথে জড়িত থাকতে পারে।
আপনার উদাহরণে, Foo.BA * ভেরিয়েবলগুলির আরম্ভকারী নেই এবং তাই "ধ্রুবক ভেরিয়েবল" হিসাবে যোগ্যতা অর্জন করবেন না। ফিক্স সহজ; Foo.BA * পরিবর্তনশীল ঘোষণাগুলি সংকলন-সময় ধ্রুবক এক্সপ্রেশনর ইনিশিয়ালাইজারগুলি রাখতে পরিবর্তন করুন।
অন্যান্য উদাহরণগুলিতে (যেখানে ইনিশিয়ালাররা ইতিমধ্যে সংকলন-সময় ধ্রুবক এক্সপ্রেশন থাকে) ভেরিয়েবলটি final
যা প্রয়োজন তা হতে পারে তা ঘোষণা করে ।
স্থির enum
চেয়ে বরং আপনার কোডটি ব্যবহার করতে আপনি পরিবর্তন করতে পারেন int
, তবে এটি আরও কয়েকবার বিভিন্ন বিধিনিষেধ নিয়ে আসে:
- আপনার অবশ্যই প্রতিটি
default
কেস অন্তর্ভুক্ত করতে হবে , এমনকি আপনার case
প্রতিটি জ্ঞানের জন্য মূল্য রয়েছে enum
; দেখুন এনামে স্যুইচ করার জন্য কেন ডিফল্টর প্রয়োজন?
case
লেবেল সব স্পষ্ট হতে হবে enum
মূল্যবোধ, না অভিব্যক্তি নির্ণয় enum
মান।
1 - ধ্রুবক অভিব্যক্তি বিধিনিষেধগুলি নিম্নলিখিত হিসাবে সংক্ষিপ্ত করা যেতে পারে। স্থায়ী এক্সপ্রেশন ক) আদিম ধরনের ব্যবহার করতে পারেন এবং String
শুধুমাত্র খ) প্রাইমারিতে যে লিটারেল (পৃথক্ থেকে এসেছ অনুমতি null
) এবং ধ্রুব ভেরিয়েবল শুধুমাত্র গ) অনুমতি ধ্রুব এক্সপ্রেশন সম্ভবত subexpressions যেমন parenthesised ঘ) নিয়োগ অপারেটার ছাড়া অপারেটার অনুমতি ++
, --
বা instanceof
, এবং e) প্রকারভেদগুলিকে আদিম ধরণের বা String
কেবলমাত্র মঞ্জুরি দিন ।
মনে রাখবেন যে এটিতে কোনও পদ্ধতি বা ল্যাম্বডা কল new
,, .class
। .length
বা অ্যারে সাবস্ক্রিপশন। তবুও, অ্যারের মান, enum
মান, আদিম মোড়ক প্রকারের মান, বক্সিং এবং আনবক্সিং এর কোনও ব্যবহারই ক এর কারণে বাদ দেওয়া হয়)।