我有一个名为 A 的类及其名为 B 的组件类。
public class A {
B myB;
...
public void bWasUpdated(){
...
List<String> list = myB.connections;
}
}
如果我的类 A 中有一个 B 的实例,并且如果 B 的实例以某种方式更新,我如何通知我的类 A 的实例并调用 bWasUpdated()
?
我尝试了接口(interface),但最后真的很困惑。我想我不太明白如何在对象及其组件之间传递数据。
编辑
public class B {
ArrayList<String> connections;
....
public void listen(){
...
if(foundNewConnection){
this.connections.add(theNewConnection);
//Notify class A about this new connection;
}
}
}
最佳答案
您应该使用Listener,它是一种称为Observer pattern 的模式形式。 .
首先,将此接口(interface)添加到您的 B 类:
public interface ChangeListener {
public void onChangeHappened();
}
其次,用setter给B添加一个监听器变量:
private ChangeListener listener;
public void setChangeListener(ChangeListener listener) {
this.listener = listener;
}
第三,让A实现ChangeListener接口(interface)并将自己注册为监听器:
public class A implements ChangeListener {
public A() {
myB = new B();
myB.setChangeListener(this);
}
...
public void onChangeHappened() {
// do something with B now that you know it has changed.
}
最后但同样重要的是,当发生变化时在 B 中调用你的监听器:
public void someMethodInB() {
// change happened
if (listener != null) {
listener.onChangeHappened();
}
}
关于java - 如何通知事件的类组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35497236/