T
- - the referent.abstract class AbstractReferrerDecorator<T> extends Object implements UntouchableReferrer<T>
Constructor and Description |
---|
AbstractReferrerDecorator() |
Modifier and Type | Method and Description |
---|---|
void |
clear() |
boolean |
enqueue() |
boolean |
equals(Object o)
Equals is calculated on IDENTITY or EQUALITY.
|
T |
get() |
(package private) abstract Referrer<T> |
getReference() |
int |
hashCode()
Standard hashCode calculation for IDENTITY based references, where k
is the referent.
|
boolean |
isEnqueued() |
T |
lookDontTouch() |
(package private) void |
refresh(ReferenceQueuingFactory<T,Referrer<T>> rqf) |
(package private) abstract void |
refresh(Referrer<T> r)
This method is called after de-serialisation, to update the Referrer,
the Ref type will be governed by the ReferenceCollection, the queue will
have also been defined.
|
String |
toString() |
final void refresh(ReferenceQueuingFactory<T,Referrer<T>> rqf)
abstract void refresh(Referrer<T> r)
r
- public void clear()
clear
in interface Referrer<T>
Reference.clear()
public boolean enqueue()
enqueue
in interface Referrer<T>
Reference.enqueue()
public boolean equals(Object o)
Referrer
Equals is calculated on IDENTITY or EQUALITY.
IDENTITY calculation:
if (this == o) return true;
if (!(o instanceof Referrer)) return false;
Object k1 = get();
Object k2 = ((Referrer) o).get();
if ( k1 != null && k1 == k2 ) return true;
return ( k1 == null && k2 == null && hashCode() == o.hashCode());
if (this == o) return true; // Same reference.
if (!(o instanceof Referrer)) return false;
Object k1 = get();
Object k2 = ((Referrer) o).get();
if ( k1 != null && k1.equals(k2)) return true;
return ( k1 == null && k2 == null && hashCode() == o.hashCode());
public final T get()
get
in interface Referrer<T>
Reference.get()
public T lookDontTouch()
lookDontTouch
in interface UntouchableReferrer<T>
public int hashCode()
Referrer
Standard hashCode calculation for IDENTITY based references, where k is the referent. This may be stored in a final field:
int hash = 7;
hash = 29 * hash + System.identityHashCode(k);
hash = 29 * hash + k.getClass().hashCode();
Standard hashCode calculation for EQUALITY based references, where k is the referent:
int hash = 7;
hash = 29 * hash + k.hashCode();
hash = 29 * hash + k.getClass().hashCode();
The hash must be calculated during construction and if the reference is cleared, the recorded hashCode returned. While the referent remains reachable the hashCode must be calculated each time.
public boolean isEnqueued()
isEnqueued
in interface Referrer<T>
Reference.isEnqueued()
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.