জাভাক সক্রিয়ভাবে এটি নিষিদ্ধ করে না, তবে এর একটি সীমাবদ্ধতা রয়েছে এর অর্থ অনেকটাই যে আপনি অন্য ফাইল থেকে কোনও শীর্ষ স্তরের শ্রেণি উল্লেখ করতে চাইবেন না যদি না এটির মধ্যে যেমন ফাইল থাকে তেমন নাম থাকে।
ধরুন আপনার কাছে দুটি ফাইল আছে, ফু.জাভা এবং বার.জাভা।
Foo.java এ রয়েছে:
বার.জাভাতে রয়েছে:
- পাবলিক ক্লাস বার
- ক্লাস বাজ
আসুন আমরা এটাও বলি যে ক্লাসের সমস্তগুলি একই প্যাকেজে (এবং ফাইলগুলি একই ডিরেক্টরিতে থাকে)।
Foo.java বাজকে বোঝায় তবে বার নয় এবং আমরা Foo.java সংকলনের চেষ্টা করলে কী হবে? সংকলনটি এই জাতীয় ত্রুটির সাথে ব্যর্থ হয়:
Foo.java:2: cannot find symbol
symbol : class Baz
location: class Foo
private Baz baz;
^
1 error
আপনি যদি এটি সম্পর্কে চিন্তা করেন তবে এটি অর্থবোধ করে। যদি ফু.জাভা বাজকে বোঝায় তবে বাজ.জাভা (বা বাজ.ক্লাস) নেই, জাভাক কীভাবে জানতে পারে কোন উত্স ফাইলটি সন্ধান করতে হবে?
আপনি যদি পরিবর্তে জাভাককে একই সাথে Foo.java এবং Bar.java সংকলন করতে বলেন, বা আপনি যদি আগে বার.জাভা সংকলন করেছিলেন (Baz.class ছেড়ে যেখানে জাভাক এটি সন্ধান করতে পারে) তবে এই ত্রুটিটি চলে যায়। তবে এটি আপনার বিল্ড প্রক্রিয়াটিকে খুব অবিশ্বাস্য এবং ঝাপটায় বোধ করে।
কারণ প্রকৃত সীমাবদ্ধতা, যা "অন্যরকম একটি ফাইল থেকে শীর্ষ স্তরের শ্রেণীর সাথে উল্লেখ করবেন না যদি না এটির যে ফাইলটি থাকে তেমন নাম না থাকে বা আপনি একই ক্লাসের সাথেও উল্লেখ করছেন যা একই ফাইলের নামকরণ করা হয় ফাইলটি যেমন "অনুসরণ করা একরকম কঠিন, লোকেরা সাধারণত প্রতিটি ফাইলে একটি শীর্ষ স্তরের শ্রেণি স্থাপনের অনেক বেশি সরল (যদিও কঠোর) কনভেনশন নিয়ে যান। ক্লাসটি সর্বজনীন হওয়া উচিত কিনা সে সম্পর্কে আপনি যদি নিজের মতামত পরিবর্তন করেন তবে এটি আরও ভাল।
কখনও কখনও সত্যিই প্রত্যেকে একটি নির্দিষ্ট উপায়ে কিছু করার উপযুক্ত কারণ রয়েছে।