既存の返信に追加すると、これが質問以来の新しいJavaバージョンによるものかどうかはわかりませんが、オブジェクトの代わりに整数をパラメータとして取るメソッドでコードをコンパイルしようとすると、コードはまだコンパイルしました。ただし、パラメーターとして null を使用した呼び出しでは、実行時に String パラメーター メソッドが引き続き呼び出されました。
例えば、
public void testMethod(int i){
System.out.println("Inside int Method");
}
public void testMethod(String s){
System.out.println("Inside String Method");
}
それでも出力が得られます:
Inside String Method
次のように呼び出された場合:
test1.testMethod(null);
これの主な理由は、String は null を値として受け入れますが、int は受け入れないためです。したがって、null は文字列オブジェクトとして分類されます。
尋ねられた質問に戻ると、タイプ Object は、新しいオブジェクトが作成されたときにのみ遭遇します。これは、null を Object として型キャストすることによって行われます。
test1.testMethod((Object) null);
または、次のようなプリミティブ データ型に任意の型のオブジェクトを使用する
test1.testMethod((Integer) null);
or
test1.testMethod((Boolean) null);
または単に新しいオブジェクトを作成することによって
test1.testMethod(new Test1());
注意すべきこと
test1.testMethod((String) null);
これは String 型のオブジェクトを作成するため、再び String メソッドを呼び出します。
また、
test1.testMethod((int) null);
and
test1.testMethod((boolean) null);
boolean と int は null を有効な値として、また int!=Integer および boolean!=Boolean として受け入れないため、コンパイル時エラーが発生します。int 型および boolean 型のオブジェクトへの整数型およびブール型のキャスト。