假设我在项目中实现了一个外部库,并在其中使用了注释接口,即FindBy
:
@Target({ElementType.FIELD, ElementType.TYPE})
public @interface FindBy {
String id() default "";
String name() default "";
}
假设我要@Deprecate
String name()
变量。
由于这是一个外部库,因此我无法进入接口并仅弃用它。扩展它,实现它或尝试覆盖它都没有被证明是有成果的。
在外部接口中弃用此变量的最佳实践是什么?
答案 0 :(得分:2)
没有Java的方式可以做到这一点。至少,如果不想避免重新打包库,则不是。
但是,您可以利用IDE。例如,使用IntelliJ IDEA,您可以使用外部注释。
这意味着每个包都维护一个annotation.xml
文件,以包含有关类,方法,字段等的所有所需注释。
启用External annotation功能后,导航至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>
我的示例是在Jackson JsonSerialize#using
注释的字段上完成的。
在用法上,您现在会看到它已删除/已弃用
您现在可以git add
和git push
这些文件,您团队中的每个人都将看到该字段的弃用。
Eclipse具有类似的功能,您也许可以利用它。
参见here。我从未尝试过,因为我不再使用Eclipse。