【发布时间】:2017-09-01 16:30:36
【问题描述】:
我想调用一个接口方法,以便它在实现该接口的类中执行。我知道我可以创建该类的一个对象来调用该方法,但是有没有办法只进行一次调用,然后任何实现该接口的类都会执行该方法?就像 iOS 中的协议一样。
例如,对于所有 Firebase 操作,我都有这个类,并且在每次操作之后,我想向发出调用的任何类发送成功消息。
这是接口类:
public interface MemberNoteSend {
public void doneSendNote(String msg);
}
这是实现接口的类之一:
public class CoachFragment extends Fragment implements MemberNoteSend {
这是一个类中处理 Firebase 操作的方法:
public static void sendNoteToMember(String userKey, String note, String source){
databaseRef.child(Constants.NODE_USERS)
.child(userKey)
.child(Constants.NODE_NOTES)
.push()
.setValue(noteObj).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
CoachFragment cf = new CoachFragment(); // I DON'T WANT THIS OBJECT
if(task.isSuccessful()) {
cf.doneSendNote("Note sent");
}else{
cf.doneSendNote("Error");
}
}
});
}
我不想创建 CoachFragment 类的对象,因为可以从多个活动片段调用此方法。我对实现此功能的其他方法持开放态度。
【问题讨论】:
-
“实现接口的任何类都会执行方法”哪个实现,JRE如何决定哪一个?
标签: java android firebase interface