Just out of curiosity I tried this example.
public class Class1 { public void method(Object obj){ System.out.println("Object"); } public void method(String str){ System.out.println("String"); } public static void main(String... arg){ new Class1().method(null); } }
The output being "String". I want to know on what basis the JVM decides to invoke method taking String as argument and not Object.
Whenever more than one overloaded methods can be applied to the argument list, the most specific method is used.
In this case either of the methods can be called when passing null
, since the "null type" is assignable to both Object
and to String
. The method that takes String
is more specific so it will be picked.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With