Skip to content

Commit 94733a9

Browse files
committed
added support for copying primitive arrays to copy builder
1 parent f8e97ef commit 94733a9

1 file changed

Lines changed: 13 additions & 9 deletions

File tree

src/main/java/org/xmlobjects/util/copy/ArrayCloner.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,27 +21,31 @@
2121

2222
import java.lang.reflect.Array;
2323

24-
public class ArrayCloner extends AbstractCloner<Object[]> {
24+
public class ArrayCloner extends AbstractCloner<Object> {
2525

2626
ArrayCloner(CopyBuilder builder) {
2727
super(builder);
2828
}
2929

3030
@Override
31-
public Object[] copy(Object[] src, Object[] dest, boolean shallowCopy) {
32-
if (shallowCopy || src.getClass().getComponentType().isPrimitive()) {
33-
System.arraycopy(src, 0, dest, 0, src.length);
34-
} else {
35-
for (int i = 0; i < src.length; i++) {
36-
dest[i] = deepCopy(src[i]);
31+
public Object copy(Object src, Object dest, boolean shallowCopy) {
32+
if (src instanceof Object[] srcArray && dest instanceof Object[] destArray) {
33+
if (shallowCopy) {
34+
System.arraycopy(srcArray, 0, destArray, 0, srcArray.length);
35+
} else {
36+
for (int i = 0; i < srcArray.length; i++) {
37+
destArray[i] = deepCopy(srcArray[i]);
38+
}
3739
}
40+
} else {
41+
System.arraycopy(src, 0, dest, 0, Array.getLength(src));
3842
}
3943

4044
return dest;
4145
}
4246

4347
@Override
44-
public Object[] newInstance(Object[] object, boolean shallowCopy) {
45-
return (Object[]) Array.newInstance(object.getClass().getComponentType(), object.length);
48+
public Object newInstance(Object object, boolean shallowCopy) {
49+
return Array.newInstance(object.getClass().getComponentType(), Array.getLength(object));
4650
}
4751
}

0 commit comments

Comments
 (0)