java - 将 null 传递给 Java 中的破坏性方法

标签 java parameters null

我计划在Java中实现一个破坏性的串联函数,如public static void dcatenate(IntList A, IntList B),用于将列表B追加到A,并且应修改原始A 。例如,

IntList A = new IntList(1,2,3); // A: 1->2->3
IntList B = new IntList(4,5,6); // B: 4->5->6
dcatenate(A, B) // A: 1->2->3->4->5->6

但是,如果A=null怎么办?

IntList A = null;
IntList B = new IntList(4,5,6); // B: 4->5->6
dcatenate(A, B) // A: 4->5->6 (is it possible?)

由于函数参数是按值传递的,所以当我将null传递给参数时,我无法在函数中找到原始的A。而且,修改参数A永远不会改变原来的A,因为它们存储在不同的地址,尽管它们都是空的。我的理解正确吗?如果是这样,我该如何解决这个问题?是否可以像C/C++一样将原A的地址传递给参数?

最佳答案

你的理解是正确的。您可以通过将 A 初始化为空列表而不是 null 来解决此问题。这也将避免 NPE 并减少 != null 检查的需要。

关于java - 将 null 传递给 Java 中的破坏性方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486738/

相关文章:

c# - 参数数量可变的扩展方法

javascript - 将回调和其他参数传递给 jQuery ajax 是否成功?

python - 处理回归(机器学习)中特征的未分配(空)值?

c# - 为什么是??运算符(operator)不在最小起订量设置方法中工作

java - Spring国际化: locale change problem

java - 安卓 Java : Understanding Activity Life?

Java 编译器问题

c++ - 如何正确使用 boost::program_options::implicit_value 作为字符串 vector ?

c# - 检查文本框文本是否为空

java - 从命令行(在 eclipse 之外)运行 Java 应用程序(maven 项目)时出错