我found 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
如果{{1}}是{{1}},则会创建新数组。但是这个阵列不会回到外面,不是吗?
答案 0 :(得分:3)
请注意:Java总是按值传递。底部的小线是当您将对象作为参数传递时,它的引用是实际传递的值。
例如,C#具有ref
关键字,允许传递引用。在Java中,您必须将对象包装在一个容器中并使用容器,这样您就可以自由地切换底层元素。
正如您所说,除非返回新数组,否则无法从外部访问新数组。我知道这样做是为了防止以下while
抛出NPE,但是当方法实际编码时,处理结果会丢失。
答案 1 :(得分:2)
你是对的,如果这是实际的代码。我想人们在使用该方法时并没有将空值作为参数传递,但即便如此,这也是一个错误。
答案 2 :(得分:0)
数组是对象,它们的引用按值传递。