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
- All
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[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
-
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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )