Java:从另一个类扩展侦听器方法的功能
Posted
技术标签:
【中文标题】Java:从另一个类扩展侦听器方法的功能【英文标题】:Java: Extend functionality of listener method from another class 【发布时间】:2016-05-07 05:58:40 【问题描述】:我想为所有 smack 的基本方法(如连接、登录、发送消息、接收消息)创建一个单独的类。
所以,有一个监听器方法来接收消息。
static ChatManagerListener chatManagerListener = new ChatManagerListener()
@Override
public void chatCreated(Chat chat, boolean createdLocally)
chat.addMessageListener(
new ChatMessageListener()
@Override
public void processMessage(Chat chat, Message message)
System.out.println("MESSAGE RECEIVED: "+message.toString());
messageReceived(message);
);
;
消息被接收并传递给 messageReceived() 方法。
情况:
现在,当我将这个类导入其他类时,我想扩展这个 messageReceived() 方法的功能,因此整个过程仍然是抽象的,开发人员只处理传入的消息。或者,这个 messageReceived() 方法以某种方式将消息推送到其他类。
【问题讨论】:
你能改变 ChatManagerListener 吗?在这里使用工厂(例如)将是一个直接的实现。 (另外,你能把它改成 ChatListenerManager 吗?哈哈) 【参考方案1】:基本上你需要定义另一个监听器来管理消息。
这是一个有效的 sn-p 示例(原型,因此它很丑陋且没有任何模式)用于更新接收者用户的 GUI。
如果您需要其他东西,请记住,您需要服务器端的插件 (PacketInterceptor)。
/*MessageGuiUpdate.java*/
public interface MessageGuiUpdate
public void displayMessage(String body);
/*XmppManager.java*/
public void init() throws XMPPException, SmackException, IOException
private MessageGuiUpdate guiUpdate;
//FOO
//BAR
/* init() */
this.chatManager = ChatManager.getInstanceFor(connection);
this.chatManager.addChatListener(
new ChatManagerListener()
@Override
public void chatCreated(Chat chat, boolean createdLocally)
if (!createdLocally)
chat.addMessageListener(new IncomingMessageListener());;
);
/*nested class*/
class IncomingMessageListener implements ChatMessageListener
@Override
public void processMessage(Chat arg0, Message message)
String from = message.getFrom();
String body = message.getBody();
if (body != null)
System.out.println(String.format("============ Received message '%1$s' from %2$s\n============", body, from));
guiUpdate.displayMessage(body);
/*CustomGui.java*/
public class CustomGui implements MessageGuiUpdate
//foo
@Override
public void displayMessage(String message)
System.out.println("I've just recived: "+message);
【讨论】:
以上是关于Java:从另一个类扩展侦听器方法的功能的主要内容,如果未能解决你的问题,请参考以下文章
JAVA:事件监听器之WindowAdapter类(针对窗口事件)
JAVA:事件监听器之WindowAdapter类(针对窗口事件)