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 (将#修改为@)