如何在java中创建方法的监听器

我真的很难实现一个方法的监听器。

在我目前的工作中,我必须每5秒请求一个方法以validation新信息,所以我想实现一种方法,每当新信息每5秒丢弃一次请求方法时就通知我。

(我已经阅读了有关观察者模式但没有成功实施。)

最好的祝福

更多信息:现在我要从smack XMPP库中重写此方法,以便在msgs队列中存储新消息

public void processMessage(Chat chat, Message message) { if (message.getType() == Message.Type.chat) { req = message.getBody().toString(); String[] temp = { chat.getParticipant().toString(), req }; System.out.println(temp[0]+"says:"+temp[1]); synchronized (lock) { msgs.add(temp); } } } 

并且我每0.5秒执行一次此方法以validation新消息:

 public String[] getMessage() { synchronized (lock) { String[] data; data=msgs.poll(); return data; } } 

我正在尝试设置一个通知系统,每次执行processMessage时都会通知我。

好的,我设法解决了我的问题。

我基于观察者模型实现了一个监听器。 为此我必须实现一个我称为XMPPmessageListener的接口:

 public interface XMPPmessageListener { public void readMsg(String senderJID, String msg); } 

比在XmppHandler类中,processMessage和getMessage方法的类添加了添加和删除侦听器的方法,以及用于存储侦听器的LinkedList:

 private LinkedList listeners = new LinkedList(); public void addMsgListener(XMPPmessageListener listener){ listeners.add(listener); } public boolean removeMsgListener(XMPPmessageListener listener){ return listeners.remove(listener); } 

比我在processMessage方法中做了一些交换以警告听众:

 public void processMessage(Chat chat, Message message) { if (message.getType() == Message.Type.chat) { for(XMPPmessageListener l: listeners){ l.readMsg(chat.getParticipant().toString(), message.getBody().toString()); } } } 

现在,每当收到消息时,我都可以通过创建XMPPmessageListener来通知任何方法,并通过覆盖readMsg方法来决定如何处理消息:

 XmppHandler xmpp = new XmppHandler(XMPPuser, XMPPpassword, XMPPaddress, XMPPdomain, XMPPport); XMPPmessageListener msglistener = new XMPPmessageListener() { @Override public void readMsg(String senderJID, String msg) { String asw=xmlHandler.processMsg(msg,senderJID); } }; xmpp.addMsgListener(msglistener);