繁体   English   中英

在不指定实现接口的类的情况下调用接口方法

[英]Calling Interface Method Without Specifying The Class Implementing The 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类的对象,因为可以从多个活动片段中调用此方法。 我愿意采用其他方式来实现此功能。

每次操作后,我想向发出呼叫的任何类发送成功消息。

因此,它不是任何 正确的方法(IMHO)是使用类似以下内容的方法:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM