Autoboxingとjavaでunboxingを行っている間、私はJavaがプリミティブなデータ型をWrapper Classに変換し、必要に応じてその逆を行うことを学びました。例えば関数がInteger
を引数として渡した場合、値を1
として渡すと、javaコンパイラはそれをnew Integer(1)
に変換します。今は私の場合です。javaがプリミティブデータ型の関数オーバーロードをサポートするのはなぜですか?
public class JavaTest
{
public static void Test(Integer integer)
{
System.out.println("in Integer");
}
public static void Test(int integer)
{
System.out.println("in int");
}
public static void main(String[] args)
{
Test(1);
}
}
この場合、javaはコンパイル時例外をスローする必要があります。それが正常にコンパイルし、その結果、以下のプリントがint型
で
iはテスト(int型の整数)メソッドはその後、javaは私が結果与えを削除した場合における
整数
私の質問はなぜJavaがそのような関数のオーバーロードを許可しているのですか?
全くそのええ、それはちょっと – Abhijit
で重複しません。まずクラスとプリミティブの型の違いを理解する必要があります。 – Vucko
私はそれが類似していると思いますが、重複していないと思います。 – Mena