我的意思是,可以使用已弃用的代码样式创建像 @deprecated 这样的注释吗?
我想创建一个注释以指示从通信协议中删除了一些消息,所以我不想使用已弃用的注释,因为我想要 1) 为我的注释提供一个更好、更具暗示性的名称,例如“消息删除” 2) 为我的注释提供参数,例如 (protocol = 5) - 从协议 5 开始删除。
但是,我想保留此删除线代码,以便其他人知道仅通过查看代码就已删除此消息。
我的意思是,可以使用已弃用的代码样式创建像 @deprecated 这样的注释吗?
我想创建一个注释以指示从通信协议中删除了一些消息,所以我不想使用已弃用的注释,因为我想要 1) 为我的注释提供一个更好、更具暗示性的名称,例如“消息删除” 2) 为我的注释提供参数,例如 (protocol = 5) - 从协议 5 开始删除。
但是,我想保留此删除线代码,以便其他人知道仅通过查看代码就已删除此消息。
@Deprecated 注解是为开发环境设计的(通常但不仅如此)。它本身什么也不做。但是对于 IDE,它是某种标记,当它“看到”该注释时 - 它会执行一些逻辑(例如“删除”代码)。我的帖子的目标是告诉开发和使用注释是不够的:它必须由环境支持。
你可以做两件事:
给方法添加
@Deprecated
注解,给方法
@deprecated
的javadoc添加标签
你应该两者都做!
引用有关此主题的 java 文档:
从 J2SE 5.0 开始,您可以使用@Deprecated
注解来弃用类、方法或字段。此外,您可以使用@deprecated Javadoc 标记告诉开发人员改用什么。
使用注释会导致 Java 编译器在使用已弃用的类、方法或字段时生成警告。如果不推荐使用的编译单元使用不推荐使用的类、方法或字段,编译器会抑制不推荐使用的警告。这使您能够构建旧版 API 而不会生成警告。
强烈建议您使用@deprecated
带有解释如何使用新 API 的适当注释的 Javadoc 标记。这可确保开发人员拥有从旧 API 到新 API 的可行迁移路径
在查看Deprecated annotation 的源代码时,您会发现没有任何具体内容使其带有删除线。使用删除线标记@Deprecated 代码是 IDE 的一项功能。
这里是:
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface Deprecated {
}
Mayur Gupta,
I created a annotation MessageRemoved:
public @interface MessageRemoved {
Protocol protocol();
}
And a Enum:
public enum Protocol {
P01, P02, P03, P04, P05
}
Using a Annotation:
@MessageRemoved(protocol = Protocol.P05)
public class OldMessage extends Message{
}
This facilitates the traceability of messages removed. Using only annotation @Deprecated
this is not possible.
+1 for oleg.lukyrych's answer但你仍然可以做点什么。
创建您的注释(使用您想要的所有参数),然后将静态代码分析添加到您的构建过程。即带有自定义规则的PMD。PMD 广为人知,并很好地集成在各种 IDE 和持续构建环境中,如 hudson/jenkins。该分析将为您生成一份很好的报告,说明您已弃用的消息的(误)使用情况。
它不如将它放入您的编辑器中那么好,但它可以完成工作。
希望这可以帮助。