如何在java中的ArrayList上添加监听器

我想在java中创建自己的ArrayList实现,可以在列表更改时进行侦听,并在发生这种情况时执行操作。 根据我的阅读,我明白我不能扩展ArrayList然后添加监听器。

我想在类中使用MyList作为带有public修饰符的变量,因此用户可以直接更改它并在更改时执行操作。

class MyList extends ArrayList.... { ... } class UseOfMyList { public MyList places = new MyList(); places.add("Buenos Aires"); //and to be able to do that List cities = new ArrayList(); cities.add("Belmopan"); places = cities; 

那么如何创建以及何时添加,删除或传递另一个列表到MyList要执行的操作?

你不能通过扩展ArrayList来做到这一点,因为它没有内置的通知机制(而且,因为它已被声明为final ,因此无法扩展)。 但是,您可以通过创建自己的List实现并在add()remove()方法中添加“侦听器”function来实现所需的结果:

 class MyList{ private ArrayList list; public MyList(){ list = new ArrayList<>(); ... } public void add(T t){ list.add(t) //do other things you want to do when items are added } public T remove(T t){ list.remove(t); //do other things you want to do when items are removed } } 

分别 ;)

 private class MyList extends ArrayList { @Override public void sort(Comparator c) { super.sort(c); resetLancamentos(); // call some metod ;) } //... @Override public boolean removeAll(Collection c) { //To change body of generated methods, choose Tools | Templates. boolean ret = super.removeAll(c); resetLancamentos(); // some metod like fireObjChanged() will do the job too return ret; } }