org.codehaus.groovy.util

## Class LazyReference<T>

- java.lang.Object
- - java.util.concurrent.locks.AbstractOwnableSynchronizer
  - - java.util.concurrent.locks.AbstractQueuedSynchronizer
    - - org.codehaus.groovy.util.LockableObject
      - - org.codehaus.groovy.util.LazyReference<T>

All Implemented Interfaces:
  java.io.Serializable

    public abstract class LazyReference<T>
    extends LockableObject

Soft reference with lazy initialization under lock

See Also:
  Serialized Form

### Nested Class Summary

### Nested classes/interfaces inherited from class java.util.concurrent.locks.AbstractQueuedSynchronizer

`java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject`

### Constructor Summary

Constructors
Constructor and Description
`LazyReference(ReferenceBundle bundle)`

### Method Summary

Methods
`void` `clear()`
`T` `get()`
`abstract T` `initValue()`
`java.lang.String` `toString()`

### Methods inherited from class org.codehaus.groovy.util.LockableObject

`isHeldExclusively, lock, tryAcquire, tryRelease, unlock`

### Methods inherited from class java.util.concurrent.locks.AbstractQueuedSynchronizer

`acquire, acquireInterruptibly, acquireShared, acquireSharedInterruptibly, compareAndSetState, getExclusiveQueuedThreads, getFirstQueuedThread, getQueuedThreads, getQueueLength, getSharedQueuedThreads, getState, getWaitingThreads, getWaitQueueLength, hasContended, hasQueuedPredecessors, hasQueuedThreads, hasWaiters, isQueued, owns, release, releaseShared, setState, tryAcquireNanos, tryAcquireShared, tryAcquireSharedNanos, tryReleaseShared`

### Methods inherited from class java.util.concurrent.locks.AbstractOwnableSynchronizer

`getExclusiveOwnerThread, setExclusiveOwnerThread`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### LazyReference

    public LazyReference(ReferenceBundle bundle)

### Method Detail

#### get

    public T get()

#### clear

    public void clear()

#### initValue

    public abstract T initValue()

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `java.util.concurrent.locks.AbstractQueuedSynchronizer`