在一些代码片段中,我注意到数组是通过将null
值强制转换为String
数组来初始化的,例如:
String[] array = (String[])null;
通常,null
用于初始化变量,例如字符串数组:
String[] array = null;
什么时候或者为什么应该将null值转换为字符串数组或其他类似的数据类型呢?
在一些代码片段中,我注意到数组是通过将null
值强制转换为String
数组来初始化的,例如:
String[] array = (String[])null;
通常,null
用于初始化变量,例如字符串数组:
String[] array = null;
没有必要使用
String[] array = (String[]) null;
如果您传递null
值给一个重载方法(即具有相同名称的多个方法),并且想要编译器选择接受String[]
参数的方法,则可能需要使用(String[]) null
。
例如,如果您有以下方法:
public void doSomething (Integer i) {}
public void doSomething (String s) {}
public void doSomething (String[] arr) {}
调用 doSomething (null)
将无法通过编译,因为编译器不知道选择哪个方法。
调用 doSomething ((String[]) null)
将执行第三个方法。
当然,你可以将 null
赋值给一个 String[]
变量,并避免强转:
String[] arr = null;
doSomething (arr);
String
或 Integer
将调用适当的强制类型转换。 - user6754053public void doSomethingElse(String... values)
,那么同样的情况也会发生——如果无法通过传递null
来区分参数值是否为空或其第一个元素是否为空。 - user85421
null
!这样做会强制你以后进行空检查,否则是不必要的。 - Timothy Truckle