使用Java中的接口触发从A类到B类的事件

时间:2015-12-03 13:12:18

标签: java interface listener

假设我已经使用如下界面定义了一个类:

public class myClass {

    public void test() {
        //here I want to trigger `onStartListener`
    }

    interface OnStartListener {
        public void onStart();
    }
}

和B级我的定义如下:

public class ClassB implements myClass.OnStartListener {
    public void ClassB() {
        myClass test1 = new myClass();
        myClass.test();
    }

    @Override
    public void onStart() {
        System.out.println("start triggered");
    }
}

如何从OnStartListener的{​​{1}}方法触发testmyClass可以处理它?<​​/ p>

2 个答案:

答案 0 :(得分:1)

是的,您需要订阅您的侦听器并调用A类中的方法:

public class ClassB implements myClass.OnStartListener {
    public void ClassB() {
        myClass test1 = new myClass(this);
        //test1.setListener(this);
        myClass.test();
    }

    @Override
    public void onStart() {
        System.out.println("start triggered");
    }
}

    public class myClass {
    OnStartListener myListener;

    public myClass(OnStartListener myListener) {
             this.myListener = myListener;
        }
    public void test() {
            //here I want to trigger `onStartListener`
            myListener.onStart();
    }

        interface OnStartListener {
            public void onStart();
    }
}

答案 1 :(得分:0)

看看swing如何处理侦听器这样的框架。基本上,您需要使用ClassB“注册”侦听器实例(myClass实例)并在其上调用onStart()

ClassB可能包含在循环中使用的List<OnStartListener>,并在每个元素上调用onStart()。注册将意味着将ClassB的实例分配给该列表。