diff options
author | Lukas Rytz <lukas.rytz@epfl.ch> | 2010-11-30 15:38:56 +0000 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@epfl.ch> | 2010-11-30 15:38:56 +0000 |
commit | 4be5e11cccace4974ed9a449052455392570139f (patch) | |
tree | 88c86bc65b88df08b48584ed791acd1619983c0c /src/library/scala/collection/mutable/WrappedArray.scala | |
parent | 402d96dd3fab6ae677966a9a258c00b3f34a37ed (diff) | |
download | scala-4be5e11cccace4974ed9a449052455392570139f.tar.gz scala-4be5e11cccace4974ed9a449052455392570139f.tar.bz2 scala-4be5e11cccace4974ed9a449052455392570139f.zip |
Deprecated the @serializable annotation, introd...
Deprecated the @serializable annotation, introduce a new trait
"scala.Serializable" which has to be extended instead (cross-platform).
Known issues:
- Companion objects of serializable classes (including case classes) are automatically made serializable. However, they don't extend "Serializable" statically because of the known difficulty (should be done before typing, but hard).
- Writing "case class C() extends Serializable" gives "error: trait Serializable is inherited twice"
- Functions are serializable, but don't extend Serializable dynamically (could be fixed by making FunctionN Serializable - shouldn't we?)
Note that @SerialVersionUID continues to be an annotation; it generates
a static field, which is not possible otherwise in scala.
Review by dragos, extempore.
Question to dragos: in JavaPlatform.isMaybeBoxed, why is there a test
for "JavaSerializableClass"? Is that correct?
Diffstat (limited to 'src/library/scala/collection/mutable/WrappedArray.scala')
-rw-r--r-- | src/library/scala/collection/mutable/WrappedArray.scala | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/src/library/scala/collection/mutable/WrappedArray.scala b/src/library/scala/collection/mutable/WrappedArray.scala index 4246a59bf8..a5fba22846 100644 --- a/src/library/scala/collection/mutable/WrappedArray.scala +++ b/src/library/scala/collection/mutable/WrappedArray.scala @@ -104,80 +104,70 @@ object WrappedArray { def newBuilder[A]: Builder[A, IndexedSeq[A]] = new ArrayBuffer - @serializable - final class ofRef[T <: AnyRef](val array: Array[T]) extends WrappedArray[T] { + final class ofRef[T <: AnyRef](val array: Array[T]) extends WrappedArray[T] with Serializable { lazy val elemManifest = ClassManifest.classType[T](array.getClass.getComponentType) def length: Int = array.length def apply(index: Int): T = array(index).asInstanceOf[T] def update(index: Int, elem: T) { array(index) = elem } } - @serializable - final class ofByte(val array: Array[Byte]) extends WrappedArray[Byte] { + final class ofByte(val array: Array[Byte]) extends WrappedArray[Byte] with Serializable { def elemManifest = ClassManifest.Byte def length: Int = array.length def apply(index: Int): Byte = array(index) def update(index: Int, elem: Byte) { array(index) = elem } } - @serializable - final class ofShort(val array: Array[Short]) extends WrappedArray[Short] { + final class ofShort(val array: Array[Short]) extends WrappedArray[Short] with Serializable { def elemManifest = ClassManifest.Short def length: Int = array.length def apply(index: Int): Short = array(index) def update(index: Int, elem: Short) { array(index) = elem } } - @serializable - final class ofChar(val array: Array[Char]) extends WrappedArray[Char] { + final class ofChar(val array: Array[Char]) extends WrappedArray[Char] with Serializable { def elemManifest = ClassManifest.Char def length: Int = array.length def apply(index: Int): Char = array(index) def update(index: Int, elem: Char) { array(index) = elem } } - @serializable - final class ofInt(val array: Array[Int]) extends WrappedArray[Int] { + final class ofInt(val array: Array[Int]) extends WrappedArray[Int] with Serializable { def elemManifest = ClassManifest.Int def length: Int = array.length def apply(index: Int): Int = array(index) def update(index: Int, elem: Int) { array(index) = elem } } - @serializable - final class ofLong(val array: Array[Long]) extends WrappedArray[Long] { + final class ofLong(val array: Array[Long]) extends WrappedArray[Long] with Serializable { def elemManifest = ClassManifest.Long def length: Int = array.length def apply(index: Int): Long = array(index) def update(index: Int, elem: Long) { array(index) = elem } } - @serializable - final class ofFloat(val array: Array[Float]) extends WrappedArray[Float] { + final class ofFloat(val array: Array[Float]) extends WrappedArray[Float] with Serializable { def elemManifest = ClassManifest.Float def length: Int = array.length def apply(index: Int): Float = array(index) def update(index: Int, elem: Float) { array(index) = elem } } - @serializable - final class ofDouble(val array: Array[Double]) extends WrappedArray[Double] { + final class ofDouble(val array: Array[Double]) extends WrappedArray[Double] with Serializable { def elemManifest = ClassManifest.Double def length: Int = array.length def apply(index: Int): Double = array(index) def update(index: Int, elem: Double) { array(index) = elem } } - @serializable - final class ofBoolean(val array: Array[Boolean]) extends WrappedArray[Boolean] { + final class ofBoolean(val array: Array[Boolean]) extends WrappedArray[Boolean] with Serializable { def elemManifest = ClassManifest.Boolean def length: Int = array.length def apply(index: Int): Boolean = array(index) def update(index: Int, elem: Boolean) { array(index) = elem } } - @serializable - final class ofUnit(val array: Array[Unit]) extends WrappedArray[Unit] { + final class ofUnit(val array: Array[Unit]) extends WrappedArray[Unit] with Serializable { def elemManifest = ClassManifest.Unit def length: Int = array.length def apply(index: Int): Unit = array(index) |