প্রশ্নের কোড উদাহরণ হিসাবে, স্ট্যান্ডার্ড সমাধানটি ক্লাসটির নাম দ্বারা স্পষ্টভাবে উল্লেখ করা এবং getClassLoader()
কল ছাড়াই এটি করাও সম্ভব :
class MyClass {
public static void startMusic() {
URL songPath = MyClass.class.getResource("background.midi");
}
}
এই পদ্ধতির এখনও পিছনের দিক রয়েছে যে আপনি যদি এই কোডটিকে একই সাথে অনেকগুলি ক্লাসে অনুলিপি করতে চান তবে এটি অনুলিপি / পেস্ট ত্রুটিগুলির বিরুদ্ধে খুব নিরাপদ নয়।
এবং শিরোনামে সঠিক প্রশ্নের হিসাবে, সংলগ্ন থ্রেডে পোস্ট করা একটি কৌশল রয়েছে :
Class currentClass = new Object() { }.getClass().getEnclosingClass();
এটি Object
কার্যকর করা প্রসঙ্গটি ধরে রাখতে নেস্টেড বেনামে সাবক্লাস ব্যবহার করে। এই কৌশলটি অনুলিপি / নিরাপদ পেস্ট হওয়ার সুবিধা রয়েছে ...
এটি অন্যান্য ক্লাসের উত্তরাধিকার সূত্রে একটি বেস ক্লাসে ব্যবহার করার সময় সাবধানতা:
এটিও লক্ষণীয় যে এই স্নিপেটটি যদি তখন কিছু বেস শ্রেণীর স্থিতিশীল পদ্ধতি হিসাবে তৈরি হয় currentClass
মানটি সর্বদা সেই বেস শ্রেণীর জন্য একটি রেফারেন্স হয়ে থাকে যা কোনও পদ্ধতিতে যে সাবক্লাস ব্যবহার করে may
getResource()
করার আগে সেখানে একটি ব্যবহারকারী সংজ্ঞায়িত একটি দৃষ্টান্ত (যেমন অ এ J2SE) বর্গ কখনও কখনও ব্যর্থ হবে। সমস্যাটি হ'ল জেআরই সেই পর্যায়ে বুটস্ট্র্যাপ ক্লাস-লোডার ব্যবহার করবে, যার ক্লাস-পাথে (বুটস্ট্র্যাপ লোডারটির) অ্যাপ্লিকেশন সংস্থান থাকবে না।