【发布时间】:2017-05-05 19:05:16
【问题描述】:
我有一个非常简单的非空检查器,它有一个 Object 类型的可变参数
public static void nonNull(Object... objects) {
//...
}
当我用任何类型的多维数组调用它时,例如:
nonNull(new int[][] {})
或
nonNull(new Object[][] {})
它会导致编译器警告说“可变参数的类型匹配不精确”。它也发生在超过 2 维的数组中。
例如,警告不会出现:
nonNull(new Object[] {})
或
nonNull(new Object())
我只是好奇为什么。多维数组只是另一个对象,就像常规数组一样,不是吗?那么为什么类型匹配不准确呢?
【问题讨论】:
-
顺便说一下,Java 确实提供了一个Objects.requireNonNull 方法。事实上,其中三个。
-
是的,我知道,但我制作了一个版本,用于传递对象数组而不是单个对象
标签: java multidimensional-array parameter-passing compiler-warnings variadic-functions