2つのクラスを含むmyPackageパッケージがあります。最初に数値を取るpublicコンストラクタが2つあります。最初はintをとり、2番目のものはIntegerをとります。私が知っている限り、どちらも同じですが、そのうちの1つは基本的なタイプです。 他のクラスのオブジェクト参照を作成して実行すると、結果としてint値を取るコンストラクタが呼び出されます。 私の質問:この場合、どのコンストラクタが呼び出されるかはどのように決定されますか? P.P.申し訳ありませんが、この質問が簡単すぎる場合。私はちょうどJavaを学び始めています。両方が同じ種類(intと整数)の変数をとる場合にどのコンストラクタを使用するかをコンパイラが決定する方法
package myPackage
public class myPackageClass{
public myPackageClass(int var){
System.out.println("Constructor + int value["+var+"]");
}
public myPackageClass(Integer var){
System.out.println("Constructor + Integer value["+var+"]");
}
}
テストファイル
package myPackage
public class testClass{
public static void main(String ... arg){
myPackageClass var2= new myPackageClass(1);
}
}
}
出力: "コンストラクタ+ int値[1]"
質問は簡単です。答えはそうではありません。詳細は[JLS](https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.9.3)にありますが、私は* reading *これは今です。経験則は次のとおりです。「より良い」(コンバージョン数の少ない)コンストラクタを選択します。 'new myPackageClass(Integer.valueOf(1))'を呼び出すと、Integerベースのものが選択されます。 (これは答えではありません。なぜなら、これは*メソッド*についての同様の質問の重複とみなすことができると思うからですが、良い方法を見つけることはできませんでした...) – Marco13