假设我已经使用如下界面定义了一个类:
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}}方法触发test
,myClass
可以处理它?</ p>
答案 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
的实例分配给该列表。