Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
The moose likes Java in General and the fly likes Object Vs String Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Object Vs String" Watch "Object Vs String" New topic
Author

Object Vs String

Prasath Thirumoorthy
Ranch Hand

Joined: Jul 23, 2004
Posts: 65
class Example {
public void myMethod(Object o) {
System.out.println("Object");
}
public void myMethod(String o) {
System.out.println("String");
}
}

Class Test {
public static void main (String arg[]) {
Example eg = new Example();
eg.myMethod(null);
}
}

Hi Friends,
Consider the above program.The output of that program is String why not Object.If I add one more myMethod(StringBuffer sb) and StringBuffer as the parameter.Its giving compilation Error.ie Ambiguos Error.

Kindly help me in this.And Give me a Reason behind those Stuff.

Thanks & Regards,
Prasath Thirumoorthy


Thanks,
Prasath

SCJP1.4, SCWCD
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24187
    
  34

This is a very frequently asked question!

When the compiler is choosing between different overloaded versions of a method, it first tries to select the "most specific" overload that matches. In this case "null" matches both String and Object, but String is more specific because it's a subclass of Object.

If you add a StringBuffer version, though, then null matches all three versions, and there is no single "most specific" version, because String and StringBuffer are both direct subclasses of Object. Therefore, the compiler can't choose, and it's an error.


[Jess in Action][AskingGoodQuestions]
Prasath Thirumoorthy
Ranch Hand

Joined: Jul 23, 2004
Posts: 65
Thanks a lot...
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Object Vs String