微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JAVA中的委托和事件处理类似于C#处理

如何解决JAVA中的委托和事件处理类似于C#处理

我已经被分配将C#项目转换为JAVA,直到现在为止一切都很顺利,但是我一直坚持使用Java中的事件处理和委托,这在Java中似乎是一个非常复杂的主题。 / p>

我在c#中有一个抽象类,其中包含一些类似于以下内容的委托和事件:

namespace FIXLibrary

public delegate void OnSessionConnectdisconnectCreate(object sender,SessionID sID);
public delegate void InBoundOutBoundMessage(object sender,Message msg);
public delegate void ApplicationMessage(object sender,Message msg);
public delegate void OtherMessage(object sender,string str);

public abstract class QuickFixEngine
{
    public virtual event OnSessionConnectdisconnectCreate SessionCreated;
    public virtual event OnSessionConnectdisconnectCreate SessionConnected;
    public virtual event OnSessionConnectdisconnectCreate SessiondisConnected;
    public virtual event InBoundOutBoundMessage InBoundMsg;
    public virtual event InBoundOutBoundMessage OutBoundMsg;
    public virtual event ApplicationMessage InBoundApplicationMessage;
    public virtual event ApplicationMessage OutBoundApplicationMessage;
    public virtual event OtherMessage OtherMessage;
}

一个继承该抽象类以进行进一步实现的类如下:

namespace FIXLibrary

public class FixInitiator : QuickFixEngine
{
    public override event OnSessionConnectdisconnectCreate SessionCreated;
    public override event OnSessionConnectdisconnectCreate SessionConnected;
    public override event OnSessionConnectdisconnectCreate SessiondisConnected;
    public override event InBoundOutBoundMessage InBoundMsg;
    public override event InBoundOutBoundMessage OutBoundMsg;
    public override event ApplicationMessage InBoundApplicationMessage;
    public override event ApplicationMessage OutBoundApplicationMessage;

    #region override methods
    public override void OnCreate(SessionID sessionID)
    {
        try
        {
            this.sessionID = sessionID;
            SessionCreated(null,sessionID);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
    }
    public override void Onlogon(SessionID sessionID)
    {
        try
        {
            SessionConnected(null,sessionID);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
        }
    }
    public override void Onlogout(SessionID sessionID)
    {
        try
        {
            SessiondisConnected(null,sessionID);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex);
    }
}

现在,我想在Java中实现此功能,以保持功能完整,因此在需要包含此库的应用程序中,也可以继续使用而无需进行任何更改。 刚开始使用Java时,我无法确定Java中的事件处理。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。