public class AQuestion
{
public void method(Object o)
{
System.out.println("Object Version");
}
public void method(String s)
{
System.out.println("String version");
}
public static void main(String[] args)
{
AQuestion question = new AQuestion();
question.method(null);
}
}
{
public void method(Object o)
{
System.out.println("Object Version");
}
public void method(String s)
{
System.out.println("String version");
}
public static void main(String[] args)
{
AQuestion question = new AQuestion();
question.method(null);
}
}
Output:
String version
Reason: According to JLS, if both methods are suitable for a method call then the method whose arguments are most specific is choosen. Here String argument is more specific than Object
Variant 2:
public class AQuestion
{
public void method(Object o, String s)
{
System.out.println("Object Version");
}
public void method(String s, Object o)
{
System.out.println("String version");
}
public static void main(String[] args)
{
AQuestion question = new AQuestion();
question.method(null, null);
}
}
Output:
compilation error
AQuestion.java:19: reference to method is ambiguous, both method method(java.lang.Object,java.lang.String) in
com.sunil.scjp.puzzles.AQuestion and method method(java.lang.String,java.lang.Object) in com.sunil.scjp.puzzles.AQuestion match
question.method(null, null);
^
1 error
Variant 3:
public class AQuestion
{
public void method(StringBuffer sb)
{
System.out.println("StringBuffer Version");
}
public void method(String s)
{
System.out.println("String version");
}
public static void main(String[] args)
{
AQuestion question = new AQuestion();
question.method(null);
}
}
{
public void method(StringBuffer sb)
{
System.out.println("StringBuffer Version");
}
public void method(String s)
{
System.out.println("String version");
}
public static void main(String[] args)
{
AQuestion question = new AQuestion();
question.method(null);
}
}
Output: compilation error
AQuestion.java:19: reference to method is ambiguous, both method method(java.lang.StringBuffer) in com.sunil.scjp.puzzles.AQuestion and method method(java.lang.String) in com.sunil.scjp.puzzles.AQuestion match
question.method(null);
^
1 error
No comments:
Post a Comment