summaryrefslogtreecommitdiff
path: root/src/library/scala/ref
diff options
context:
space:
mode:
authorRebecca Claire Murphy <rebecca.murphy@chirondigital.com>2015-10-22 14:44:45 -0400
committerRebecca Claire Murphy <rebecca.murphy@chirondigital.com>2015-10-22 14:44:45 -0400
commit168575d9f42e424bb138f05251a3a86eb01adf80 (patch)
treebb58ccb933c28e9956cbb723702392d3ce530bf9 /src/library/scala/ref
parent462dc9af886391c9c31cb6949b15e69b0cab55ef (diff)
downloadscala-168575d9f42e424bb138f05251a3a86eb01adf80.tar.gz
scala-168575d9f42e424bb138f05251a3a86eb01adf80.tar.bz2
scala-168575d9f42e424bb138f05251a3a86eb01adf80.zip
Add Extractor and apply Method for SoftReference
scala.ref.WeakReference has two features which are lacking in scala.ref.SoftReference, an extractor and a .apply method that greatly enhance the usability of that class. This commit simply replicates that functionality for SoftReference.
Diffstat (limited to 'src/library/scala/ref')
-rw-r--r--src/library/scala/ref/SoftReference.scala13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/library/scala/ref/SoftReference.scala b/src/library/scala/ref/SoftReference.scala
index e4ce667981..5e60f00788 100644
--- a/src/library/scala/ref/SoftReference.scala
+++ b/src/library/scala/ref/SoftReference.scala
@@ -20,6 +20,19 @@ class SoftReference[+T <: AnyRef](value : T, queue : ReferenceQueue[T]) extends
}
/**
+ * A companion object that implements an extractor for `SoftReference` values
+ * @author Rebecca Claire Murphy
+ */
+object SoftReference {
+
+ /** Creates a `SoftReference` pointing to `value` */
+ def apply[T <: AnyRef](value: T) = new SoftReference(value)
+
+ /** Optionally returns the referenced value, or `None` if that value no longer exists */
+ def unapply[T <: AnyRef](sr: SoftReference[T]): Option[T] = Option(sr.underlying.get)
+}
+
+/**
* @author Philipp Haller
*/
private class SoftReferenceWithWrapper[T <: AnyRef](value: T, queue: ReferenceQueue[T], val wrapper: SoftReference[T])