【问题标题】:Method invocation vs Reflection-Based Event System方法调用与基于反射的事件系统
【发布时间】:2013-08-23 13:19:57
【问题描述】:

目前,我正在尝试为应用程序创建一个 mod。我试图通过在应用程序中放置“钩子”来使其尽可能动态。这些钩子将用于调用/创建我选择的任何设计(事件系统/方法调用)。我想知道哪一个更适合我的项目。如果您有任何其他“更好”的方法,请告诉我。

如果我进行方法调用,我会在超类中调用一个方法(这个超类是用于模组的,模组会扩展它)。 mod如果使用被调用的方法..将运行里面的代码。

如果我做一个基于反射的事件系统。我会创建一个对象(对象的创建将由钩子引起),mod(子类)会监听这个对象的创建... I.E

getEventManager().registerlistener(this)

@EventHandler
public void onCertainEvent(EventTick event){}

就“好”代码和效率而言,哪一个会更好?或者,如果您有其他方法。请告诉我。

【问题讨论】:

  • 两者都不是。最好的选择是拥有一个模组可以实现的interface。反射相对昂贵,只应在编译时不知道类型和方法签名的情况下使用。

标签: java events reflection methods


【解决方案1】:

使用注释是编写代码的一种方式。这可以帮助删除大量样板代码。虽然为调用者编写反射更慢且更麻烦,但对被调用者来说可能更好。慢一点,代码预热后通常需要 30-100 纳秒,这对您来说可能并不重要。

我建议您采用似乎是描述您的问题的最自然方式的方法。简单易懂的东西通常是最重要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多