これは、Java仕様の欠点に関連して、別の質問への回答で見ました。
さらに欠点があり、これは微妙なトピックです。これをチェックしてください:
public class methodOverloading{ public static void hello(Integer x){ System.out.println("Integer"); } public static void hello(long x){ System.out.println("long"); } public static void main(String[] args){ int i = 5; hello(i); } }
ここでは、コンパイラが自動ボクシングよりも拡張を選択するため、「long」が出力されます(自分でチェックしていません)。自動ボクシングを使用するときは注意するか、まったく使用しないでください。
これは実際にはオートボクシングではなく拡大の例であると確信していますか、それともまったく別のものですか?
i
私の最初のスキャンでは、オブジェクトではなくプリミティブとして宣言されていることに基づいて、出力が「長い」というステートメントに同意します。ただし、変更した場合
hello(long x)
に
hello(Long x)
出力は「整数」を出力します
ここで実際に何が起こっているのですか?私はJava用のコンパイラ/バイトコードインタプリタについて何も知りません...