我自己弃用的注释

时间:2013-10-03 12:25:07

标签: java annotations

可以创建一个像@deprecated这样的注释,我的意思是,不推荐使用代码风格?

我想创建一个注释来指示某些消息已从通信协议中删除,因此我不想使用已弃用的注释,因为我想要1)为我的注释提供更好,更具暗示性的名称,比如“删除消息”2)为我的注释提供参数,例如(协议= 5) - 自协议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。该分析将为您提供一份很好的报告(错误地)使用您弃用的消息。

它没有像进入你的编辑器那样好,但它能完成这项工作。

希望这有帮助。