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

如何将Java方法声明或标记为已弃用?,java,deprecated,Java,Deprecated,我想让我的一个方法“弃用”=不再使用 但我仍然希望在API中包含它。我只想向任何使用这种方法的人发出“警告” 我如何才能做到这一点?您可以做两件事: 将注释添加到方法中,然后 向方法的javadoc添加一个标记 你应该同时做这两件事 引述有关这个问题的最新资料: 从J2SE 5.0开始,您可以使用@Deprecated注释来弃用类、方法或字段。此外,您还可以使用@deprecated Javadoc标记来告诉开发人员应该使用什么 使用注释会导致Java编译器在使用不推荐使用的类、方法或字段时生成

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

但我仍然希望在API中包含它。我只想向任何使用这种方法的人发出“警告”


我如何才能做到这一点?

您可以做两件事:

  • 将注释添加到方法中,然后
  • 向方法的javadoc添加一个标记
  • 你应该同时做这两件事

    引述有关这个问题的最新资料:

    从J2SE 5.0开始,您可以使用@Deprecated注释来弃用类、方法或字段。此外,您还可以使用@deprecated Javadoc标记来告诉开发人员应该使用什么

    使用注释会导致Java编译器在使用不推荐使用的类、方法或字段时生成警告。如果不推荐使用的编译单元使用不推荐使用的类、方法或字段,则编译器将抑制不推荐使用警告。这使您能够在不生成警告的情况下构建遗留API

    强烈建议您使用Javadoc@deprecated标记,并附上解释如何使用新API的适当注释。这将确保开发人员拥有从旧API到新API的可行迁移路径

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

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

    对您的方法使用
    @Deprecated
    ,您还应该在JavaDoc中提到它。

    查看
    @Deprecated
    注释。

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

    不推荐使用的
    @JavaDoc标记用于文档目的

    @Deprecated
    注释指示编译器该方法已弃用。以下是Sun/Oracles文档中关于该主题的内容:

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


    您可以在

    找到完整的文档,因为缺少一些小的解释

    对这样的方法使用
    @Deprecated
    注释

     /**
     * @param basePrice
     * 
     * @deprecated  reason this method is deprecated <br/>
     *              {will be removed in next version} <br/>
     *              use {@link #setPurchasePrice()} instead like this: 
     * 
     * 
     * <blockquote><pre>
     * getProduct().setPurchasePrice(200) 
     * </pre></blockquote>
     * 
     */
    @Deprecated
    public void setBaseprice(int basePrice) {
    }
    
    /**
    *@param基准价格
    * 
    *@deprecated reason此方法已弃用
    *{将在下一版本中删除}
    *使用{@link#setPurchasePrice()}替换如下: * * * *getProduct().setPurchasePrice(200) * * */ @不赞成 公共价格(国际基准价){ }
    记住要解释:
  • 为什么不再推荐此方法。使用时会出现什么问题。如果有,请提供该问题讨论的链接。(为了可读性,请记住分隔行

  • 何时将其删除(让您的用户知道,如果他们决定坚持旧方法,他们仍然可以在多大程度上依赖此方法)
  • 提供解决方案或链接到您推荐的方法
  • {@link#setPurchasePrice()}
    @Deprecrated不是你的选择吗?是的,但我不知道…这就是为什么我要问这个问题:)看评论不是答案的地方!不完全正确。javadoc和注释告诉编译器方法都是deprecated@Bohemian事实并非如此。注释是在Java语言规范第9.6.1.6()节中定义的,而javadoc标记不是。因此注释是语言的一部分。如果您决定编写自己的Java编译器,可以忽略javadoc标记,但必须识别注释。@ShaMan-H\u Fel我相信javadoc模型也可以工作。因为在Java5之前,它是唯一的选择,而且确实有效。当您使用
    @deprecated
    javadoc标记(在Java 4-)标记一个方法时,编译器将该方法(类、字段)标记为deprecated,即使没有可用的源代码,IDE也会显示警告。如何链接外部库?例如:com.hello.api.PublicController#new@LinuxLars完全同意!Java 9添加了两个属性以开始认真对待弃用,但是添加另一个默认值为
    “的属性
    reason
    不会有任何影响。我希望注释中的
    @deprecated
    消息可以添加到
    @deprecated
    (一个点来修复它们)…链接现在断开了不是应该是
    而不是
    ?@argh1969,对吧!不记得我从哪里得到的模板了。但我可以确认两个版本都有效。尽管我在编辑时支持标准。