我计划在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 - 在Java中将null传递给破坏性方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37486738/

10-09 04:15