调用接口方法而不指定实现接口的类

时间:2017-09-01 16:30:37

标签: java android firebase interface

我想调用一个接口方法,以便它在实现该接口的类中执行。我知道我可以创建该类的对象来调用该方法,但有没有办法只进行一次调用,那么实现该接口的任何类都会执行该方法?就像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类的对象,因为可以从多个活动片段调用此方法。我愿意接受其他方式来实现这一功能。

1 个答案:

答案 0 :(得分:1)

  

每次操作后,我都想向成功通话的任何班级发送成功信息。

所以它不是任何。正确的方法(恕我直言)是使用类似的东西:

public static void sendNoteToMember(final MemberNoteSend sender, String userKey, String note, String source) {
    // ...
    if (task.isSuccessful()) {
        sender.doneSendNote("Note sent");
        // ...