このプログラムを実行すると、文字列パラメーターでオーバーロードされたメソッドが呼び出されるのはなぜですか。
public class StaticBindTest {
public static void main(String args[]) {
StaticBindTest et = new StaticBindTest();
et.sort(null);
}
//overloaded method
public void sort(Object c){
System.out.println("Inside Collection sort method");
}
//another overloaded method
public void sort(String hs){
System.out.println("Inside HashSet sort method");
}
}
メソッドを次のように書き直した場合
public void sort(String hs){
if(hs instanceof String)
System.out.println("Inside HashSet sort method");
}
空白のコンソールが表示されます。これは、String のインスタンスではないことを意味します。なぜこの方法で呼び出すのでしょうか?