Как создать прослушиватель, который отслеживает изменения в древовидной карте?
Вопрос
Я создаю графический интерфейс, который спрягает испанские глаголы.Он использует древовидную карту в качестве основной структуры данных, которая заполнена экземплярами класса Verb.Каждый экземпляр включает строку, содержащую инфинитивную форму глагола, такую как "hablar" или "escribir". В графическом интерфейсе есть функция, которая позволяет пользователю ввести новый глагол, введя его инфинитив и его перевод на английский.
Я хочу знать, как создать прослушиватель, который будет запускать некоторый код каждый раз, когда новый глагол добавляется - или удаляется - из TreeMap.Как бы я это сделал?
Решение
Вы можете создать подкласс класса TreeMap, например.
public class MyTreeMap<K, V> extends TreeMap<K, V> {
@Override
public V put(K key, V val) {
V ret = super.put(key, val);
myAddCallback(key, val);
return ret;
}
@Override
public V remove(K key) {
V ret = super.remove(key);
myRemoveCallback(key);
return ret;
}
}
Другим (значительно более сложным) вариантом было бы проверить Аспект j, ан АОП-основан JRE.