可以创建一个像@deprecated这样的注释,我的意思是,不推荐使用代码风格?
我想创建一个注释来指示某些消息已从通信协议中删除,因此我不想使用已弃用的注释,因为我想要1)为我的注释提供更好,更具暗示性的名称,比如“删除消息”2)为我的注释提供参数,例如(协议= 5) - 自协议5以来已删除。
但是,我想通过查看代码知道此消息已被删除,我想保留此删除代码。
答案 0 :(得分:4)
@Deprecated注释是为开发环境设计的(通常但不仅仅是)。它本身没有任何作用。但是对于IDE来说它是某种标记,当它“看到”那个注释时 - 它执行一些逻辑(例如“删除”代码)。我的帖子的目标是说明开发和使用注释是不够的:它必须得到环境的支持。
答案 1 :(得分:1)
在查看source code of the Deprecated annotation时,您会看到没有任何特定内容可以使其显示为删除线。 IDE的一个功能是使用删除线标记@Deprecated代码。
这是:
@Documented
@Retention(RetentionPolicy.RUNTIME)
public @interface Deprecated {
}
答案 2 :(得分:1)
您可以做两件事:
添加 @Deprecated注释方法,和 添加一个 @deprecated标签到方法的javadoc
你应该同时做到这两点!
引用有关此主题的java文档:
从J2SE 5.0开始,您可以使用@Deprecated批注来弃用类,方法或字段。此外,您可以使用@deprecated Javadoc标记告诉开发人员使用什么。
使用注释会导致Java编译器在使用不推荐使用的类,方法或字段时生成警告。如果不推荐的编译单元使用不推荐使用的类,方法或字段,则编译器会禁止弃用警告。这使您可以构建旧API而不会生成警告。
强烈建议您使用Javadoc @deprecated标记以及解释如何使用新API的相应注释。这可确保开发人员拥有从旧API到新API的可行迁移路径
答案 3 :(得分:0)
Mayur Gupta,
我创建了一个注释MessageRemoved:
public @interface MessageRemoved {
Protocol protocol();
}
和Enum:
public enum Protocol {
P01, P02, P03, P04, P05
}
使用注释:
@MessageRemoved(protocol = Protocol.P05)
public class OldMessage extends Message{
}
这有助于删除消息的可追溯性。仅使用注释@Deprecated,这是不可能的。
答案 4 :(得分:0)
+1 for oleg.lukyrych的回答但是你仍然可以做点什么。
创建注释(包含所需的所有参数),然后在构建过程中添加静态代码分析。即具有自定义规则的PMD。 PMD是众所周知的,并且很好地集成在各种IDE和连续构建环境中,如hudson / jenkins。该分析将为您提供一份很好的报告(错误地)使用您弃用的消息。
它没有像进入你的编辑器那样好,但它能完成这项工作。
希望这有帮助。