首页 文章

如何将Java方法声明或标记为已弃用?

提问于
浏览
251

我想让我的一个方法“弃用”=不再使用了 .

但我仍然想在我的API中使用它 . 我只想向使用该方法的任何人显示“警告” .

我怎样才能做到这一点?

6 回答

  • 81

    在方法上使用@Deprecated . 不要忘记澄清javadoc字段:

    /**
     * Does some thing in old style.
     *
     * @deprecated use {@link #new()} instead.  
     */
    @Deprecated
    public void old() {
    // ...
    }
    
  • 33

    同时使用 @Deprecated 注释和 @deprecated JavaDoc标记 .

    @deprecated JavaDoc标记用于文档目的 .

    @Deprecated 注释指示编译器不推荐使用该方法 . 以下是Sun / Oracles关于该主题的文件:

    使用@Deprecated批注来弃用类,方法或字段可确保所有编译器在代码使用该程序元素时发出警告 . 相反,不能保证所有编译器总是会根据@deprecated Javadoc标签发出警告,尽管Sun编译器目前这样做 . 其他编译器可能不会发出此类警告 . 因此,使用@Deprecated注释生成警告更加便携,依赖于@deprecated Javadoc标记 .

    您可以在How and When to Deprecate APIs找到完整的文档

  • 31

    你可以做两件事:

    你应该 do both

    引用java documentation关于这个主题:

    从J2SE 5.0开始,您可以使用@Deprecated批注来弃用类,方法或字段 . 此外,您可以使用@deprecated Javadoc标记告诉开发人员使用什么 . 使用注释会导致Java编译器在使用不推荐使用的类,方法或字段时生成警告 . 如果不推荐的编译单元使用不推荐的类,方法或字段,则编译器会禁止弃用警告 . 这使您可以构建旧API而不会生成警告 . 强烈建议您使用Javadoc @deprecated标记以及解释如何使用新API的相应注释 . 这可确保开发人员拥有从旧API到新API的可行迁移路径

  • 524

    因为缺少一些小的解释

    在这样的方法上使用 @Deprecated 注释

    /**
     * @param basePrice
     * 
     * @deprecated  reason this method is deprecated 
    * {will be removed in next version}
    * use {@link #setPurchasePrice()} instead like this: * * * <blockquote><pre> * getProduct().setPurchasePrice(200) * </pre></blockquote> * */ @Deprecated public void setBaseprice(int basePrice) { }

    记得解释一下:

    • Why is this method no longer recommended . 使用它时会出现什么问题 . 提供有关此事的讨论的链接(如果有) . (记得要分开线条以便于阅读

    • When it will be removed . (让您的用户知道,如果他们决定坚持旧方式,他们仍然可以依赖这种方法)

    • Provide a solution 或链接到您推荐的方法 {@link #setPurchasePrice()}

  • 7

    使用annotation @Deprecated 作为您的方法,您还应该在javadoc中提及它 .

  • 3

    看一下 @Deprecated 注释 .

相关问题