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

Xel*_*ian 6 java list add arraylist listener

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

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

class MyList extends ArrayList<object>.... {  ... }
 class UseOfMyList {
 public MyList places = new MyList<Object>();
 places.add("Buenos Aires");
 //and to be able to do that
 List cities = new ArrayList<Object>();
 cities.add("Belmopan");
 places = cities;
Run Code Online (Sandbox Code Playgroud)

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

dre*_*ore 11

你不能通过扩展来做到这一点ArrayList,因为它没有内置的通知机制(而且,因为它已被声明final,因此无法扩展).但是,您可以通过创建自己的实现你想要的结果List的实施和增加你的"监听"功能相一相的add()remove()方法:

class MyList<T>{
    private ArrayList<T> 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
    }
}
Run Code Online (Sandbox Code Playgroud)