| Author |
what will be the output and why
|
kesava chaitanya
Ranch Hand
Joined: Aug 15, 2001
Posts: 140
|
|
package example; class dup { public static void main(String[] args) { System.out.println("Hello World!"); dup a=new dup(); a.m1(null); } void m1(Throwable t) { System.out.println("Throwable"); } void m1(Exception t) { System.out.println("Exception"); } void m1(StringBuffer t) { System.out.println("StirngBuffer"); } } when i run this class i am gettiing this exception Error(9,5): reference to m1 is ambiguous; both method m1(java.lang.Exception) in class example.dup and method m1(java.lang.StringBuffer) in class example.dup match if i remove this method void m1(StringBuffer t) { System.out.println("StirngBuffer"); } application is compiled fine; when i run the class i am getting o/p Hello World! Exception but i assumed o/p will be Hello World! Throwable why??
|
 |
Ernest Friedman-Hill
author and iconoclast
Marshal
Joined: Jul 08, 2003
Posts: 24061
|
|
|
When resolving overloaded methods, the compiler chooses the most specific applicable overload. Because Exception is a subclass of Throwable the m1(Exception) overload is "more specific". On the other hand, there's no way to decide which of Exception or StringBuffer matches better, so with all three methods, you get the compile error.
|
[Jess in Action][AskingGoodQuestions]
|
 |
 |
|
|
subject: what will be the output and why
|
|
|