java - 空参数的 Vararg 类型推断

标签 java type-inference variadic-functions

<分区>

如果我有两个具有相同签名的方法,只是可变参数类型不同,当我不使用参数或传递 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));

输出是“字符串参数”。为什么 Java 决定在这里调用第二种方法而不是第一种方法?我很难找到描述这一点的规范的相关部分。

最佳答案

据我了解,String[] 比 Object[] 更具体,因此 null 与 String[] 匹配;但是,如果您专门使用 null,则经常需要将 null 转换为一个类型。如果键入参数,则不会出现此问题。

test("a", "b", (String)null);

相同
String foo = null;
test("a", "b", foo);

关于java - 空参数的 Vararg 类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33001993/

相关文章:

java - 在 JPQL 中查询获取过去 X 个月的数据

java - 截断要保存的字符串?

java - Web服务实现

ocaml - 只接受 sum 类型的一种变体作为 OCaml 函数参数

c++ - 模板类型参数未按要求扩展

c++ - 抽象函数和可变参数列表

java - 如何在项目之间共享logback.xml

f# - 递归调用的函数类型推断

Scala 没有推断出适当的方法

assembly - LLVM 程序集 : call a function using varargs