我found类 PerspectiveTransform
的 transform
方法中的以下代码在 JAI
库中:
public void transform(double[] srcPts, int srcOff,
double[] dstPts, int dstOff,
int numPts) {
if ( srcPts == null ) {
throw new IllegalArgumentException(JaiI18N.getString("Generic0"));
}
if (dstPts == null) {
dstPts = new double[numPts * 2 + dstOff];
}
while (numPts-- > 0) {
double x = srcPts[srcOff++];
double y = srcPts[srcOff++];
double w = m20 * x + m21 * y + m22;
if (w == 0) {
dstPts[dstOff++] = x;
dstPts[dstOff++] = y;
} else {
dstPts[dstOff++] = (m00 * x + m01 * y + m02) / w;
dstPts[dstOff++] = (m10 * x + m11 * y + m12) / w;
}
}
}
看起来如果dstPts
为null
,则创建新数组。但是这个数组不会返回到外部,不是吗?
最佳答案
请注意:Java 始终按值传递。底部的小线是当你传递一个对象作为参数时,它的引用就是实际传递的值。
例如,C# 有 ref
关键字,它允许传递引用。在Java中,你必须将你的对象包装在某种容器中并使用该容器,这样你就可以自由地切换底层元素。
正如您所说,除非返回新数组,否则无法从外部访问它。据我所知,这样做是为了防止以下 while
抛出 NPE,但处理结果会随着方法的实际编码而丢失。
关于java - Java中数组会按引用返回吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19985928/