java - 为什么我应该在 java 中使用 (String[])null 而不是 null?

标签 java

在一些片段中,我注意到数组是通过将 null 值转换为 String 数组来初始化的,例如:

String[] array = (String[])null;

通常,null 用于初始化变量,例如一个字符串数组,例如:

String[] array = null;

什么时候或为什么我应该将空值转换为字符串数组或任何其他类似的数据类型?

最佳答案

没有必要用

String[] array = (String[]) null;

如果将 null 值传递给重载方法(即具有相同名称的多个方法之一),则可能必须使用 (String[]) null 并且您希望编译器选择接受 String[] 参数的方法。

例如,如果您有以下方法:

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);

关于java - 为什么我应该在 java 中使用 (String[])null 而不是 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41823407/

相关文章:

java - 如何在Hadoop环境中执行用Java编写的Hadoop Job

java - Google应用程序引擎为不同实体生成唯一的ID

java - 对于 JTextField,如何设置另一个类中的文本?

Java从父对象调用子方法

java - Java中\p{Alpha}和\p{L}的区别

java - 无法连接到本地 DynamoDB

java - 在 Spring Boot 的 for 循环中使用 REQUIRES_NEW 的事务问题

java - 泛型 - 方法返回类型作为扩展类

java - 如何为一个完整的线程创建日志

java - 为什么我要加上 "static"