如果我有两个具有相同签名的方法,仅由vararg类型改变,那么当我不使用参数或传递null时,Java如何知道要调用哪个?
例如,如果我有这两种方法:
public static String test(String a, String b, Object... args){
return "object args";
}
public static String test(String a, String b, String... args){
return "string args";
}
我打电话给:
System.out.println(test("a", "b"));
System.out.println(test("a", "b", null));
输出为“string args”。为什么Java决定在这里调用第二种方法而不是第一种?我很难找到描述此规范的相关部分。
答案 0 :(得分:1)
据我所知,String []比Object []更具体,因此null与String []匹配;但是,如果您专门使用null
,则经常需要将null转换为类型。如果输入了参数,那么你就不会遇到这个问题。
test("a", "b", (String)null);
与
相同String foo = null;
test("a", "b", foo);