GeeCON Prague 2014*
The moose likes Programmer Certification (SCJP/OCPJP) and the fly likes Question on OverLoading Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Certification » Programmer Certification (SCJP/OCPJP)
Bookmark "Question on OverLoading" Watch "Question on OverLoading" New topic
Author

Question on OverLoading

Sarma Lolla
Ranch Hand

Joined: Oct 21, 2002
Posts: 203
Hi Can any one explain for the following odd behaviuor?
a) When func method is overloaded for Object and String and called sending a null the String version is executed.
b)When the same func method is overlaoded for String and StringBuffer and null called using null, compiler complains about ambiguity.
Here is the code
Barry Gaunt
Ranch Hand

Joined: Aug 03, 2002
Posts: 7729
The "most specific" override will be called. When you have Object and String, the one that takes a String will be called because a String is an Object. String is the "most specific".
When you add StringBuffer there are now two methods to choose from. String and StringBuffer are both distinct Objects. The compiler cannot choose between the method that takes a String and the method that takes a StringBuffer. So you get the ambiguity.
Sort of...
-Barry
[ January 28, 2003: Message edited by: Barry Gaunt ]

Ask a Meaningful Question and HowToAskQuestionsOnJavaRanch
Getting someone to think and try something out is much more useful than just telling them the answer.
Dan Culache
Ranch Hand

Joined: Jan 24, 2003
Posts: 70
Another way to put it is:
There will be no ambiguity if the arguments are in the same hierarchical path.
In the following code only m(CE c) creates ambiguity. The arguments of the rest are on the same hierarchical path and they don't. You'll have to take out either lines 1,2,3,4 or 5 only for the code to compile.
Like Barry said the most specific "overload" will be called.
By the way Barry I believe this is an "overload" rather than an "override".
 
GeeCON Prague 2014
 
subject: Question on OverLoading