首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >拥有一个集合监听器的好方法?

拥有一个集合监听器的好方法?
EN

Stack Overflow用户
提问于 2009-12-22 03:36:32
回答 5查看 10.5K关注 0票数 19

有没有更好的方法在java集合上拥有一个侦听器,而不是把它包装在一个实现观察者模式的类中?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-22 04:04:37

你应该看看Glazed Lists

它包含可观察的列表类,每当添加、删除、替换等元素时都会触发事件

票数 13
EN

Stack Overflow用户

发布于 2009-12-22 04:05:50

您可以使用Guava中的ForwardingSetForwardingList等来使用所需的行为来修饰特定的实例。

下面是我自己的实现,它只使用普通的JDK API:

// create an abstract class that implements this interface with blank implementations
// that way, annonymous subclasses can observe only the events they care about
public interface CollectionObserver<E> {

    public void beforeAdd(E o);

    public void afterAdd(E o);

    // other events to be observed ...

}

// this method would go in a utility class
public static <E> Collection<E> observedCollection(
    final Collection<E> collection, final CollectionObserver<E> observer) {
        return new Collection<E>() {
            public boolean add(final E o) {
                observer.beforeAdd(o);
                boolean result = collection.add(o);
                observer.afterAdd(o);
                return result;
            }

            // ... generate rest of delegate methods in Eclipse

    };
    }
票数 6
EN

Stack Overflow用户

发布于 2009-12-22 03:55:58

Apache Events

Commons- events为触发和处理事件提供额外的类。它专注于Java集合框架,为触发事件的其他集合提供装饰器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1942144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档