本人最近项目中在遇到个这个情况,需要做动态代理,invoke方法里的参数是object类型,实际参数是hashmap类型,需要从object类型里面取出key value键值对
首先hashmap和object是不能直接强制转换类型的,我采用反射取得数据
为了取得数据,首先得了解下hashmap的结构
在这里只讲点关键点,hashmap里面有个内部类,Node<K,Y>这个就是存放key value 的节点
static class Node<K,V> implements Map.Entry<K,V> {
final int hash;
final K key;
V value;
Node<K,V> next;
Node(int hash, K key, V value, Node<K,V> next) {
this.hash = hash;
this.key = key;
this.value = value;
this.next = next;
}
public final K getKey() { return key; }
public final V getValue() { return value; }
public final String toString() { return key + "=" + value; }
public final int hashCode() {
return Objects.hashCode(key) ^ Objects.