Class AbstractReferenceMap.ReferenceEntry<K,V>

  • All Implemented Interfaces:
    Map.Entry<K,V>, KeyValue<K,V>
    Enclosing class:
    AbstractReferenceMap < K , V>


    protected static class AbstractReferenceMap.ReferenceEntry<K,V>
    extends AbstractHashedMap.HashEntry<K,V>
    A MapEntry implementation for the map.

    If getKey() or getValue() returns null, it means the mapping is stale and should be removed.

    Since:
    3.1
    • Constructor Detail

      • ReferenceEntry

        public ReferenceEntry(AbstractReferenceMap<K,V> parent,
                              AbstractHashedMap.HashEntry<K,V> next,
                              int hashCode,
                              K key,
                              V value)
        Creates a new entry object for the ReferenceMap.
        Parameters:
        parent - the parent map
        next - the next entry in the hash bucket
        hashCode - the hash code of the key
        key - the key
        value - the value
    • Method Detail

      • getKey

        public K getKey()
        Gets the key from the entry. This method dereferences weak and soft keys and thus may return null.
        Specified by:
        getKey in interface  Map.Entry<K,V>
        Specified by:
        getKey in interface  KeyValue<K,V>
        Overrides:
        getKey in class  AbstractHashedMap.HashEntry<K,V>
        Returns:
        the key, which may be null if it was garbage collected
      • equals

        public boolean equals(Object obj)
        Compares this map entry to another.

        This implementation uses isEqualKey and isEqualValue on the main map for comparison.

        Specified by:
        equals in interface  Map.Entry<K,V>
        Overrides:
        equals in class  AbstractHashedMap.HashEntry<K,V>
        Parameters:
        obj - the other map entry to compare to
        Returns:
        true if equal, false if not
      • hashCode

        public int hashCode()
        Gets the hashcode of the entry using temporary hard references.

        This implementation uses hashEntry on the main map.

        Specified by:
        hashCode in interface  Map.Entry<K,V>
        Overrides:
        hashCode in class  AbstractHashedMap.HashEntry<K,V>
        Returns:
        the hashcode of the entry
      • toReference

        protected <T> Object toReference(AbstractReferenceMap.ReferenceStrength type,
                                         T referent,
                                         int hash)
        Constructs a reference of the given type to the given referent. The reference is registered with the queue for later purging.
        Type Parameters:
        T - the type of the referenced object
        Parameters:
        type - HARD, SOFT or WEAK
        referent - the object to refer to
        hash - the hash code of the key of the mapping; this number might be different from referent.hashCode() if the referent represents a value and not a key
        Returns:
        the reference to the object