我计划在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/