我的代码有ArrayList
和LinkedList
,并希望实现一个我可以用于这两种情况的自定义添加方法类。
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(anotherList);
LinkedList<Integer> listTwo = new LinkedList<Integer>();
listTwo.add(newList);
我想记录LinkedList和ArrayList的每个add方法。
我本以为实现Java列表接口就足够了。是否有建议的做法?
我知道有多种方法可以解决这个问题。
答案 0 :(得分:1)
如果您能够将Guava作为依赖项加入,那么它有一个现成的解决方案来委派默认集合:https://github.com/google/guava/wiki/CollectionHelpersExplained#forwarding-decorators
列出的示例与您的示例用例匹配:
class AddLoggingList<E> extends ForwardingList<E> {
final List<E> delegate; // backing list
@Override protected List<E> delegate() {
return delegate;
}
@Override public void add(int index, E elem) {
log(index, elem);
super.add(index, elem);
}
@Override public boolean add(E elem) {
return standardAdd(elem); // implements in terms of add(int, E)
}
@Override public boolean addAll(Collection<? extends E> c) {
return standardAddAll(c); // implements in terms of add
}
}