【问题标题】:Globally define Lomboks @ExtensionMethod全局定义 Lomboks @ExtensionMethod
【发布时间】:2021-09-08 20:54:26
【问题描述】:

是否可以为整个项目设置@ExtensionMethod? 例如,如果我使用方法 isNull() 扩展 Object,是否可以在整个项目中使用它,只在例如配置类中定义 @ExtensionMethod 并在任何地方使用它而不在每个类上声明它?

【问题讨论】:

    标签: java extension-methods lombok


    【解决方案1】:

    Lombok 贡献者在这里:

    没有。主要原因是“惊喜”——lombok 会影响在其内部任何地方对 lombok 的提及为零的源文件(没有类型或导入;lombok 的 CMD+F 将产生零结果),然而,没有它就无法编译。

    Lombok 确实有一个配置系统 (lombok.config),这将是定义一些完全限定的类名的地方,这些类名将被视为此配置文件所在目录中所有 java 源文件的自动考虑的扩展方法的来源以及该目录的所有子目录。但是,这个功能现在不存在,也不会存在,直到我和其他主要贡献者就我们是否要打开这个蠕虫罐展开一些辩论。

    一些中间解决方案,其中“默认扩展”列表,但您仍然需要通过使用@DefaultExtensionMethods 或其他注释类来启用它(或只是@ExtensionMethod,仅此而已,没有参数)可能是我们划定界限的地方。我会记住的。

    【讨论】:

    • 想了想,和比如Getter注解没什么区别。使用 Getter 注释,操作具有定义的类,而不是调用类。那里的调用类也对 Lombok 注释一无所知。根据逻辑,ExtensionMethod 注释也应该像 Getter 一样工作。 ExtensionMethod 设置为扩展方法的类,调用者无需任何附加注释即可使用该函数。
    猜你喜欢
    • 2016-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    相关资源
    最近更新 更多