我有A,B和C这三个类。A侦听B的更改,B侦听C。如果C被更改,它将在其侦听器B上调用notifyChange(),其侦听方法如下所示:

clientComp.setChangeListener(new NavigationClientCompositeListener() {

        @Override
        public void notifyChange() {
            notifyChange();
        }
    });


B只是想将此通知传递给A,这就是我的问题。 notifyChange()方法内部的notifyChange()调用将导致无限循环。有没有办法在此接口实现内引用B类的notifyChange()方法?还是从一开始就是不好的设计?

我怎样才能最好地解决这个问题?我当然可以更改B的方法的名称,但是如果我有很多这样的嵌套类,那将使它变得很荒唐,而这并不是我所追求的解决方案。

最佳答案

使用<class-name>.this可帮助您引用外部类的当前实例

clientComp.setChangeListener(new NavigationClientCompositeListener() {

    @Override
    public void notifyChange() {
        B.this.notifyChange(); //Calls the notifyChange() of B, which is the outer class
    }
});

09-27 03:24