diff options
author | Martin Odersky <odersky@gmail.com> | 2006-05-16 10:37:52 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-05-16 10:37:52 +0000 |
commit | 703ba993c311aa8d452608fc94414e2778218fd6 (patch) | |
tree | 20efe4dcbff70308e0b0eca2258a63367b14aa5b /src/library | |
parent | bc4bd901b1372716e8071e64d0d2c9e065597e99 (diff) | |
download | scala-703ba993c311aa8d452608fc94414e2778218fd6.tar.gz scala-703ba993c311aa8d452608fc94414e2778218fd6.tar.bz2 scala-703ba993c311aa8d452608fc94414e2778218fd6.zip |
Fixed bug 594
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/runtime/BoxedObjectArray.scala | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/library/scala/runtime/BoxedObjectArray.scala b/src/library/scala/runtime/BoxedObjectArray.scala index 3d1b2d8c46..6563e12e4b 100644 --- a/src/library/scala/runtime/BoxedObjectArray.scala +++ b/src/library/scala/runtime/BoxedObjectArray.scala @@ -31,8 +31,13 @@ final class BoxedObjectArray(val value: Array[Object]) extends BoxedArray { override def hashCode(): Int = value.hashCode(); + private def create(length: int): Array[Object] = { + val elemClass = value.getClass().getComponentType() + java.lang.reflect.Array.newInstance(elemClass, length).asInstanceOf[Array[Object]] + } + override def subArray(start: Int, end: Int): Array[Object] = { - val result = new Array[Object](end - start); + val result = create(end - start) Array.copy(value, 0, result, 0, end - start) result } @@ -45,7 +50,7 @@ final class BoxedObjectArray(val value: Array[Object]) extends BoxedArray { if (p(value(i))) { include(i) = true; len = len + 1 } i = i + 1 } - val result = new Array[Object](len); + val result = create(len); len = 0; i = 0; while (len < result.length) { |