जावा varargs कार्यान्वयन में एक बग प्रतीत होता है। विभिन्न प्रकार के vararg पैरामीटर के साथ विधि ओवरलोड होने पर जावा उपयुक्त प्रकार को अलग नहीं कर सकता है।varargs और overloading के साथ बग?
यह मुझे एक त्रुटि The method ... is ambiguous for the type ...
पर विचार करें निम्नलिखित कोड देता है:
public class Test
{
public static void main(String[] args) throws Throwable
{
doit(new int[]{1, 2}); // <- no problem
doit(new double[]{1.2, 2.2}); // <- no problem
doit(1.2f, 2.2f); // <- no problem
doit(1.2d, 2.2d); // <- no problem
doit(1, 2); // <- The method doit(double[]) is ambiguous for the type Test
}
public static void doit(double... ds)
{
System.out.println("doubles");
}
public static void doit(int... is)
{
System.out.println("ints");
}
}
docs कहते हैं: "सामान्यतया, आप एक varargs विधि ओवरलोड नहीं करना चाहिए, या यह प्रोग्रामर के लिए मुश्किल हो जाएगा पता लगाएं कि ओवरलोडिंग कहलाती है। "
हालांकि वे इस त्रुटि का उल्लेख नहीं करते हैं, और यह प्रोग्रामर नहीं है जो इसे मुश्किल लग रहे हैं, यह संकलक है।
विचार?
संपादित - संकलक: सूर्य JDK 1.6.0 U18
हो सकता है कि सौभाग्य से, इस समस्या से बचने के एक जोड़े को अलग तरीके हैं वे प्रोग्रामर के बारे में बात कर रहे हैं जिन्होंने संकलक लिखा था। – mob
क्या संस्करण और संकलक? ग्रहण या जेडीके? –
संपादित देखें - सूर्य जेडीके 1.6.0 u18 – pstanton