class RestoringWeakReference[T <: AnyRef] extends AnyRef
RestoringWeakReference contains a scala.ref.WeakReference that,
after it has been nulled out, uses a restorer function to restore the
value. This can be used for data that can afford to be evicted by
the garbage collector, but will be needed later. One good example is
Lift form callbacks, which may need the value of an object, but where
you don't necessarily want to be retaining the object indefinitely
while someone is on a page in the face of GC contention.
You can use RestoringWeakReference in a couple of basic ways:
val ref = RestoringWeakReference(() => User.find(id))
In this situation, the RestoringWeakReference will immediately call
the passed function to provide the starting value for the reference,
and then the same function will be used if the reference is evicted.
val ref = RestoringWeakReference(starter, () => User.find(id))
Here, starter is an Option[User] and User.find returns an
Option[User]. The first parameter will be used to initialize the
weak reference, while the function will be used to restore the value
if the reference is evicted.
val baseRef = new WeakReference(starter) val ref = new RestoringWeakReference(baseRef, () => User.find(id))
If you already have a WeakReference instance, you can instantiate
RestoringWeakReference directly and pass that reference as the
starting value, as well.
In all these cases, you use ref.value to get a hold of the value.
That function will return the value if it is available, and, if not,
it will restore the WeakReference and then return the value.
- Alphabetic
- By Inheritance
- RestoringWeakReference
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new RestoringWeakReference(reference: WeakReference[T], restorer: () => T)
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def apply(): T
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()