如何正确管理扩展(包括覆盖)

问题描述 投票:0回答:1

所以这是非常具体的。我正在编写一个应该灵活的框架。为了实现这一目标,我希望用户能够将自己的代码添加到某些函数的末尾或完全覆盖该函数。

因此,我为一组功能创建了各种界面,我希望用户能够对其进行扩展。现在,我只是让用户执行 Extensions.install(new TheirExtensionClass()) ,它存储类并使用接口调用函数。现在是最重要的部分。我可以通过在安装函数中简单地要求一个布尔值来在每个类的基础上完成此操作。我如何在每个功能的基础上进行覆盖?我尝试使用注释,但我不知道如何获取 Callable 或 Runnable 的注释,只能获取没有方法名称就无法获取的方法的注释,这需要我在某个地方注册所有名称,这很难维护。有没有更好的办法?

java frameworks extension-methods
1个回答
0
投票

好吧,根据 ControlAltDel 的提示(我不确定我的解释是否正确),我最终得到了最简单的方法,这很好,因为无论如何我只想为几个类执行此操作。
所以我只是为所有应该能够在我的配置类中扩展的类创建变量。
现在在初始化时,我检查它们是否为空,如果是,则将它们设置为我的类。如果它们不为空,则意味着用户已手动将它们设置为自己的类(仅使用

public class TheirClass extends MyClass {}
),我将使用它。然后我通过配置中的变量调用所有函数。它不像我希望的那么灵活,但工作得很好,有时当你刚刚达到 java 的极限时。
如果有人发现或知道更好、更灵活的方式,欢迎您将其发布在这里。

© www.soinside.com 2019 - 2024. All rights reserved.