为Java实现自定义添加方法

时间:2016-12-20 03:31:38

标签: java

我的代码有ArrayListLinkedList,并希望实现一个我可以用于这两种情况的自定义添加方法类。

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(anotherList);

LinkedList<Integer> listTwo = new LinkedList<Integer>();
listTwo.add(newList);

我想记录LinkedList和ArrayList的每个add方法。

我本以为实现Java列表接口就足够了。是否有建议的做法?

我知道有多种方法可以解决这个问题。

1 个答案:

答案 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
  }
}