aspose file tools
The moose likes Java in General and the fly likes Object Vs String Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Java » Java in General
Reply 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: 24041
    
  13

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...
 
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to run our stuff on 16 servers instead of 3.
 
subject: Object Vs String
 
Similar Threads
Method resolution
Strange recursive method call! ???
no ambiguous reference error for Object?
Regarding String
overloading