我有一个方法需要返回一个 long 数组。
long[] mainMethod() {
//create the resultant array
long[] result = null;
method1(result); // Their job is to append new long values to the array
method2(result);
}
我希望做这样的事情:
// Update the result array
int origLen = (result == null) ? 0 : result.length;
long[] newResult = new long[origLen + 4];
if (origLen != 0) {
newResult = Arrays.copyOf(result, origLen + 4);
}
newResult[origLen + 0] = someLong;
newResult[origLen + 1] = someLong;
newResult[origLen + 2] = someLong;
newResult[origLen + 3] = someLong;
result = newResult;
当我意识到 java 按值传递引用时,我无法在此处更改引用。如果不能更改这些方法的定义(要生成的结果将作为参数传递,因为存在其他返回值),我该如何更新原始数组?有人告诉我不要使用 ArrayList(我可以更新方法来获取 ArrayList,但有人告诉我使用 ArrayList 并最终返回 long 数组是愚蠢的)..
我在想我最初可以分配 4 个长值,然后继续传递它并复制它,例如:
result = Arrays.copyOf(result, origLen + 4);
我认为这可以工作,但是我如何检查实际返回的数组是否mainMethod
包含一些有用的信息?截至目前,我正在检查它是否为空..
提前致谢。