class TempIdentityReferrer<T> extends Object implements UntouchableReferrer<T>
Constructor and Description |
---|
TempIdentityReferrer(T t) |
Modifier and Type | Method and Description |
---|---|
void |
clear() |
boolean |
enqueue() |
boolean |
equals(Object o)
Equals is calculated on IDENTITY or EQUALITY.
|
T |
get() |
int |
hashCode()
Standard hashCode calculation for IDENTITY based references, where k
is the referent.
|
boolean |
isEnqueued() |
T |
lookDontTouch() |
private final T t
TempIdentityReferrer(T t)
public T get()
get
in interface Referrer<T>
Reference.get()
public void clear()
clear
in interface Referrer<T>
Reference.clear()
public boolean isEnqueued()
isEnqueued
in interface Referrer<T>
Reference.isEnqueued()
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 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 T lookDontTouch()
lookDontTouch
in interface UntouchableReferrer<T>
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.