【发布时间】:2014-12-07 12:31:38
【问题描述】:
在我的程序中,我有一个扩展 HashMap 的类。我想在对 HashMap 节点进行任何修改后执行一些方法。看起来 HashMap 有一些有趣的方法:
void afterNodeAccess(Node<K,V> p) { }
void afterNodeInsertion(boolean evict) { }
void afterNodeRemoval(Node<K,V> p) { }
但不幸的是,它们都是包保护的,我不能在我的课堂上覆盖它们。当然有解决方法 - 我可以将我的班级转移到 java.util 包,但在我看来这不是一个好的做法。那么有没有更清洁的方法来实现这一点?
编辑:我删除了以前的课程,因为它没有任何意义。请参阅答案下的 cmets。
【问题讨论】:
-
重写调用
afterNodeInsetion和co的方法怎么样? -
正如我所说,这些方法是包保护的。我已经制作了 HashMapModInterface 类来解决它,但我认为它不够干净。