2日で私はJavaで試験を受けました、そして私はこの質問への答えを理解することができません:
class ClassA {
public String foo(Integer x , int y) {
return "Integer, int";
}
public String foo(int x, Double y) {
return "int, Double";
}
public String foo(Number x, Number y) {
return "Number, Number";
}
public String foo(Object x, Object y) {
return "Object, Object";
}
public static void main(String... args) {
ClassA a = new ClassA();
System.out.print(a.foo(5, 1.2f) + " ");
System.out.println(a.foo(null, null));
}
}
出力は何ですか?
答えは次のとおりです。
Number, Number Number, Number
私は、Javaが常に最も指定されたメソッドを選択することを知っています。そのため、メソッドではなくメソッドa.foo(null,null);
を呼び出します。しかし、なぜメソッドではなくメソッドも呼び出すのですか?Number,Number
Object,Object
a.foo(5,1.2f);
Number,Number
int,Double
しかし、役立つかもしれないもう1つのこと:f
after1.2
を削除すると、呼び出しは次のよう
a.foo(5,1.2);
になります。コンパイラエラーが発生し、Number,Number
とint,Double
メソッドのどちらかを選択できません。
あなたたちが私にそれを説明することができれば、本当に役に立ちます:)