From 168575d9f42e424bb138f05251a3a86eb01adf80 Mon Sep 17 00:00:00 2001 From: Rebecca Claire Murphy Date: Thu, 22 Oct 2015 14:44:45 -0400 Subject: 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. --- src/library/scala/ref/SoftReference.scala | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/library') 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 @@ -19,6 +19,19 @@ class SoftReference[+T <: AnyRef](value : T, queue : ReferenceQueue[T]) extends new SoftReferenceWithWrapper[T](value, queue, this) } +/** + * 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 */ -- cgit v1.2.3