有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

禁用JavaDocs的java注释

是否有注释声明某个方法即使是公共的,也不会包含在JavaDocs中

比如:

@nojavadocs
public void foo(){
//...
}

另外,我理解这里关于API的要点,但这些方法只是“不受支持”它们可以工作(并且必须是公共的,可以从其他软件包访问),但我们不想麻烦记录它们,并回答有关如何在其功能与支持的使用场景不相关时使用它们的问题。好的设计可能意味着将它们移动到另一个类,但它们在逻辑上引用了类中的数据


共 (4) 个答案

  1. # 1 楼答案

    如果您使用的是Sun的JavaDocs工具,则不会

    他们一直在争取它,但自1997年以来,它一直处于低优先级

    您可以编写一个定制的doclet来解决这个问题,或者使用第三方工具(DocFlex或类似工具)

  2. # 2 楼答案

    是的。。。但不是以一种好的方式(拥有不是真正“公共”的公共方法不是一个好的设计实践)

    您可以按照this thread中给出的建议,使用@deprecated标记该方法,然后在运行javadoc时使用选项-nodeprecated

    编辑:正如其他人所指出的,这不是一个理想的行动方案。这将解决您的问题,但您确实需要重新思考为什么要隐藏该方法——给定代码的编译版本,有人仍然可以看到您的函数;在文档中隐藏它实际上并不隐藏该方法。这里,我要强调的是,限定符^ {< CD3> }、^ {< CD4> }和^ {< CD5> }具有你应该充分考虑和利用的意义。没有所谓的“隐藏的”public方法

  3. # 3 楼答案

    /**
     *  Don't use this method <br>
     *  <i>or all your data will be lost.</i>
     */
    public void foo(){
        //...
    }
    

    好吧,用一个更好的解释为什么用户不应该使用这个方法
    请记住,使用反编译器或反射查找任何(公共)方法并不困难

  4. # 4 楼答案

    我认为您希望这样做的唯一原因是在某种意义上“隐藏”该方法,即使只是在文档方面。如果您这样做了,那么您将把文档设计成“不完整的”,即当文档过时并且不再准确地反映类所做的事情时,文档将变得不完整。因为该方法仍然是公共API的一部分,所以无论如何,您并没有真正隐藏它

    如果您希望一个方法在类或少数用户之外不使用,请将其设为私有或包。如果这很不方便,而且必须是公共的,我只需要非常清楚地记录它的使用限制,可能有一个命名约定(例如,python这样做,有一些实体名称被下划线包围,您可以看到,但它们更多地是类实现的一部分,而不是公共api)