Question on OverLoading
posted 22 years ago
-
-
Number of slices to send:Optional 'thank-you' note:
-
-
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
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
posted 22 years ago
-
-
Number of slices to send:Optional 'thank-you' note:
-
-
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 ]
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.
posted 22 years ago
-
-
Number of slices to send:Optional 'thank-you' note:
-
-
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".
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".
| Willie Smits can speak 40 languages. This tiny ad can speak only one: The new gardening playing cards kickstarter is now live! https://www.kickstarter.com/projects/paulwheaton/garden-cards |






