【发布时间】:2013-09-11 13:59:48
【问题描述】:
我有一个方法需要返回一个 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 是否包含一些有用的信息?截至目前,我正在检查它是否为空..
提前致谢。
【问题讨论】:
-
有人告诉我不要使用 ArrayList 不要听他们的。
-
使用 ArrayList 并最终将其转换为 long 数组。没什么可笑的。
标签: java arrays pass-by-reference pass-by-value