【发布时间】:2021-09-08 20:54:26
【问题描述】:
是否可以为整个项目设置@ExtensionMethod? 例如,如果我使用方法 isNull() 扩展 Object,是否可以在整个项目中使用它,只在例如配置类中定义 @ExtensionMethod 并在任何地方使用它而不在每个类上声明它?
【问题讨论】:
标签: java extension-methods lombok
是否可以为整个项目设置@ExtensionMethod? 例如,如果我使用方法 isNull() 扩展 Object,是否可以在整个项目中使用它,只在例如配置类中定义 @ExtensionMethod 并在任何地方使用它而不在每个类上声明它?
【问题讨论】:
标签: java extension-methods lombok
Lombok 贡献者在这里:
没有。主要原因是“惊喜”——lombok 会影响在其内部任何地方对 lombok 的提及为零的源文件(没有类型或导入;lombok 的 CMD+F 将产生零结果),然而,没有它就无法编译。
Lombok 确实有一个配置系统 (lombok.config),这将是定义一些完全限定的类名的地方,这些类名将被视为此配置文件所在目录中所有 java 源文件的自动考虑的扩展方法的来源以及该目录的所有子目录。但是,这个功能现在不存在,也不会存在,直到我和其他主要贡献者就我们是否要打开这个蠕虫罐展开一些辩论。
一些中间解决方案,其中有“默认扩展”列表,但您仍然需要通过使用@DefaultExtensionMethods 或其他注释类来启用它(或只是@ExtensionMethod,仅此而已,没有参数)可能是我们划定界限的地方。我会记住的。
【讨论】: