文章目录
前言
本文章帮助大家对KeyValueHolder
类的理解。
一、概述
KeyValueHolder
意为键值持有器。顾名思义,此类可以表示“键值对”对象,其提供读取键、值、判断、哈希码。但它不能修改值,且键、值均非空。
它属于值类型。
二、源码理解
包
package java.util;
KeyValueHolder类
final class KeyValueHolder<K,V> implements Map.Entry<K,V> { /*...*/ }
final
且非public
类,无法继承,仅本包可用。使用类时传入泛型K
、V
,为键、值的类型。实现了Map.Entry
接口,使此类具有的映射容器的项的表现。参考Map.Entry
接口。
KeyValueHolder变量
key
final K key;
非public
常量。表示键。
value
final V value;
非public
常量。表示值。
KeyValueHolder方法
KeyValueHolder
KeyValueHolder(K k, V v) { /*...*/ }
非public
构造函数,将键、值设为k
、v
。若k
或v
为空,则抛出NullPointerException
异常。
getKey
public K getKey() { /*...*/ }
实现Map.Entry
接口的K getKey()
方法,参考Map.Entry.getKey
方法。
返回键。
getValue
public V getValue() { /*...*/ }
实现Map.Entry
接口的V getValue()
方法,参考Map.Entry.getValue
方法。
返回值。
setValue
public V setValue(V value) { throw new UnsupportedOperationException("not supported"); }
实现Map.Entry
接口的V setValue(V value)
方法,参考Map.Entry.setValue
方法。
设置值。仅抛出UnsupportedOperationException
异常,不做其它处理。
equals
public boolean equals(Object o) { /*...*/ }
重写Object
类的boolean equals(Object obj)
方法,参考Object.equals
方法。
判断此对象与o
的键值对是否相等。相等的条件为:o
也实现了映射容器的项接口且它们键、值均相等(equals
)。
hashCode
public int hashCode() { /*...*/ }
重写Object
类的int hashCode()
方法,参考Object.hashCode
方法。
返回此对象键、值的哈希码的异或。
toString
public String toString() { /*...*/ }
重写Object
类的String toString()
方法,参考Object.toString
方法。
将此对象键值对“转换”为字符串,返回key + "=" + value
。
总结
新人源码理解,望大家多多指点。