java - 弃用外部库中的变量@interface
问题描述
假设我在我的项目中实现了一个外部库,以及我想在其中使用的注释接口,即FindBy
:
@Target({ElementType.FIELD, ElementType.TYPE})
public @interface FindBy {
String id() default "";
String name() default "";
}
假设我想要@Deprecate
这个String name()
变量。
由于这是一个外部库,我无法进入界面并简单地弃用它。扩展它、实现它或试图覆盖它也没有被证明是富有成效的。
在外部接口中弃用这个变量的最佳实践是什么?
解决方案
没有 Java 方式可以做到这一点。至少,如果您想避免重新打包库,则不会。
但是,您可以利用 IDE。例如,使用 IntelliJ IDEA,您可以使用External annotations。
这意味着annotation.xml
每个包都维护一个文件,以包含所有需要的类、方法、字段等注释。
启用外部注释功能后,导航到您的FindBy
注释,然后在目标方法上,打开快速操作弹出窗口
并选择“注释方法... ”。将出现另一个弹出窗口
选择java.lang.Deprecated。
至此,annotation.xml
已经创建了一个文件,内容类似于
<root>
<item name='com.fasterxml.jackson.databind.annotation.JsonSerialize java.lang.Class<? extends com.fasterxml.jackson.databind.JsonSerializer> using()'>
<annotation name='java.lang.Deprecated' />
</item>
</root>
我的示例是在 JacksonJsonSerialize#using
注释的字段上完成的。
在用法上,您现在会看到它已被删除/已弃用
您现在可以使用这些文件,git add
并且git push
您团队中的每个人都会看到该字段的弃用。
Eclipse 有一个类似的特性,您也许可以利用它。
见这里。我从未尝试过,因为我不再使用 Eclipse。
推荐阅读
- c# - 使用游戏状态时程序崩溃(白屏)
- java - Swing 中的 Javafx 表
- javascript - 将 html 和 javascript 表单信息转换为 rails
- python - 从 Google API 获取有关我网站上某个页面的统计信息以及该页面上的链接
- spring-boot - CloudFoundry 中的 Spring Cloud Gateway
- javascript - 我可以将嵌套函数分配给 Javascript 中父函数的参数吗?
- ios - 无法将 JSON 值传输到 SecondViewController 中的标签
- jquery - 使用 JQuery 一次将 JSON 数据传递到 div
- c# - 无法从另一个类设置 MainWindow 拥有的 TextBox 文本
- r - 如何将单个元素中的逗号分隔值更改为多列并分配数字编码