Article ID: 177166
Article Last Modified on 8/25/2005
Ambig.java(14,5) : error J0079: Ambiguity between 'void Ambig.foo(double d, long l)' and 'void Ambig.foo(long l, double d)'
public class Ambig
{
public static void main(String args[])
{
Ambig b = new Ambig();
b.foo((long)1, (double)2);
b.foo((double)1, (long)2);
b.foo(1,2);
b.foo(1.5,2.5);
// pause for user to press return
try{System.in.read();}catch(Exception e){}
}
public void foo(double d, double d2)
{
System.out.println("Double = "+d+" Double2 = "+d2);
}
public void foo(long l, long l2)
{
System.out.println("Long = "+l+" Long2 = "+l2);
}
public void foo(long l, double d)
{
System.out.println("Long = "+l+" Double = "+d);
}
public void foo(double d, long l)
{
System.out.println("Double = "+d+" Long = "+l);
}
}
You should see the following error:
Ambig.java(14,5) : error J0079: Ambiguity between 'void Ambig.foo(double d, long l)' and 'void Ambig.foo(long l, double d)'To work around this problem, change the order of the overloaded methods to the following:
public void foo(long l, long l2)
{
System.out.println("Long = "+l+" Long2 = "+l2);
}
public void foo(long l, double d)
{
System.out.println("Long = "+l+" Double = "+d);
}
public void foo(double d, long l)
{
System.out.println("Double = "+d+" Long = "+l);
}
public void foo(double d, double d2)
{
System.out.println("Double = "+d+" Double2 = "+d2);
}
-or-
public void foo(double d, double d2)
{
System.out.println("Double = "+d+" Double2 = "+d2);
}
public void foo(long l, double d)
{
System.out.println("Long = "+l+" Double = "+d);
}
public void foo(double d, long l)
{
System.out.println("Double = "+d+" Long = "+l);
}
public void foo(long l, long l2)
{
System.out.println("Long = "+l+" Long2 = "+l2);
}
Keywords: kberrmsg kbbug kbfix kbsdkjava300fix kbsdkjava310fix KB177166