我有以下代码:
public static void varargsMethod(String ... strings) {
if (strings != null && strings.length != 0) {
for (String s : strings) {
System.out.println(s);
}
} else {
System.out.println("Hello (string free) world!");
}
}
public static void main(String[] args) {
varargsMethod(null);
varargsMethod((String[]) null);
varargsMethod((String) null);
varargsMethod();
}
我想知道为什么以 null 作为参数的第一次调用会生成带有提示的警告,即需要显式强制转换。从这个问题的答案中,我不清楚为什么需要这个演员表。前两个调用工作并产生相同的结果,而第三个产生“null”。我明确想要前两个调用的行为。
对于引用类型和数组,null 不应该始终有效(并自动转换)吗?我不明白,为什么在这种情况下类型信息很重要。
编辑:用完全没有参数的变体更新了代码。我绝对需要区分这三种情况(没有数组和空数组以相同的方式处理;另一个数组具有空值)。我想知道是否有比检查空数组和空数组更好的方法。