যেমন পূর্বে উল্লিখিত হিসাবে সংকলন সময়ে ওভারলোডিং রেজোলিউশন সঞ্চালিত হয়।
জাভা পাজলারের কাছে এটির একটি দুর্দান্ত উদাহরণ রয়েছে:
ধাঁধা 46: বিভ্রান্তিকর নির্মাণকারীর কেস
এই ধাঁধাটি আপনাকে দুটি বিভ্রান্তিকর নির্মাণকারীর সাথে উপস্থাপন করে। মূল পদ্ধতিটি একটি নির্মাণকারীকে আহ্বান জানায়, তবে কোনটি? প্রোগ্রামটির আউটপুট উত্তরের উপর নির্ভর করে। প্রোগ্রামটি কী মুদ্রণ করে, বা এটি আইনীও?
public class Confusing {
private Confusing(Object o) {
System.out.println("Object");
}
private Confusing(double[] dArray) {
System.out.println("double array");
}
public static void main(String[] args) {
new Confusing(null);
}
}
সমাধান 46: বিভ্রান্তিকর নির্মাণকারীর কেস
... জাভার ওভারলোড রেজোলিউশন প্রক্রিয়া দুটি পর্যায়ে পরিচালিত হয়। প্রথম পর্যায়ে অ্যাক্সেসযোগ্য এবং প্রযোজ্য সমস্ত পদ্ধতি বা কনস্ট্রাক্টর নির্বাচন করে। দ্বিতীয় পর্যায়ে প্রথম ধাপে নির্বাচিত পদ্ধতি বা নির্মাতাদের মধ্যে সুনির্দিষ্টভাবে নির্বাচন করা হয়। একটি পদ্ধতি বা নির্মাতারা অন্যটির তুলনায় কম নির্দিষ্ট if
আমাদের প্রোগ্রামে, উভয় কনস্ট্রাক্টর অ্যাক্সেসযোগ্য এবং প্রযোজ্য। কনস্ট্রাক্টর
কনফিউজিং (অবজেক্ট) কনফিউজিং (ডাবল []) তে পাস হওয়া কোনও প্যারামিটার গ্রহণ করে , সুতরাং
কনফিউজিং (অবজেক্ট) কম নির্দিষ্ট নয়। (প্রতিটি ডাবল অ্যারে একটি বস্তু , তবে প্রতিটি বস্তু একটি ডাবল অ্যারে নয় )) সর্বাধিক সুনির্দিষ্ট নির্মাতা কনফিউজিং (ডাবল []) , যা প্রোগ্রামটির আউটপুট ব্যাখ্যা করে।
আপনি দ্বিগুণ টাইপের একটি মান পাস করলে এই আচরণটি বোধগম্য হয় ; এটা অনির্দিষ্ট অথবা যদি আপনি পাস হয় নাল । এই ধাঁধাটি বোঝার মূল চাবিকাঠিটি হল যে পদ্ধতি বা নির্মাণকারী সর্বাধিক নির্দিষ্ট সেই পরীক্ষায় প্রকৃত প্যারামিটারগুলি ব্যবহার করা হয় না : অনুরোধে উপস্থিত পরামিতিগুলি। কোন ওভারলোডিং প্রযোজ্য তা নির্ধারণ করতে এগুলি ব্যবহার করা হয়। একবার সংকলক কোন ওভারলোডিংগুলি প্রযোজ্য এবং অ্যাক্সেসযোগ্য তা নির্ধারণ করে, এটি কেবলমাত্র আনুষ্ঠানিক প্যারামিটারগুলি ব্যবহার করে: সর্বাধিক নির্দিষ্ট ওভারলোডিং নির্বাচন করে: ঘোষণায় উপস্থিত প্যারামিটারগুলি।
নাল প্যারামিটার দিয়ে কনফিউজিং (অবজেক্ট) কনস্ট্রাক্টরকে ডাকতে নতুন কনফিউজিং ((অবজেক্ট) নাল) লিখুন । এটি নিশ্চিত করে যে কেবল বিভ্রান্তি (অবজেক্ট) প্রযোজ্য। আরও সাধারণভাবে, সংকলককে নির্দিষ্ট ওভারলোডিং নির্বাচন করতে বাধ্য করার জন্য, আনুষ্ঠানিক পরামিতিগুলির ঘোষিত ধরণেরগুলিতে প্রকৃত পরামিতি নিক্ষেপ করুন।