【问题标题】:Overridden methods in JavaDocJavaDoc 中的重写方法
【发布时间】:2013-04-01 01:42:36
【问题描述】:

我正在记录我开发的 Java 程序,并且想知道如果我只记录超类,是否会为继承的方法(被覆盖)生成 JavaDoc?

如果我有一个名为 Vehicle 的类,其中包含 drive() 方法,以及一个名为 Car 的子类,并且重写了 drive() 方法,那么车辆驱动方法的文档是否会包含在 Cars 中如果 Car 类中没有放入 Javadoc,则驱动方法?

【问题讨论】:

  • 你试过了吗?

标签: java javadoc


【解决方案1】:

[我]想知道如果我只记录超类,是否会为继承的方法(被覆盖)生成 JavaDoc?

是的。如果子类上没有 javadoc cmets,则会根据超类 javadoc 生成 javadoc。

如果您在子类中定义 javadocs,它们将替换继承的 javadocs,但您可以使用{@inheritDoc} 将相应的超类 javadoc cmets 包含在子类 javadocs 中。

参考:

【讨论】:

    【解决方案2】:

    如果要使用被覆盖方法的 JavaDoc,请使用{@inheritDoc}。 F.e. :

    /**
      * {@inheritDoc}
      */
    @Override
    public double getX() { ... }
    

    请注意,几乎每个被覆盖的方法也继承了上层文档 :) 。您可以在oracle docs 中了解它(感谢@Steve Kuo 的提示)。

    在以下两种情况下,Javadoc 工具具有复制或“继承”类和接口中的方法 cmets 的能力。构造函数、字段和嵌套类不继承doc cmets... (1) 自动继承comment 以填补缺失的文本... (2) 显式继承带有{@inheritDoc} 标签的comment

    如果您想引用类似/重要/...的方法,请使用@seejava.awt.Point 类的示例:

     /**
     * Returns the location of this point.
     * This method is included for completeness, to parallel the
     * <code>getLocation</code> method of <code>Component</code>.
     * @return      a copy of this point, at the same location
     * @see         java.awt.Component#getLocation
     * @see         java.awt.Point#setLocation(java.awt.Point)
     * @see         java.awt.Point#setLocation(int, int)
     * @since       1.1
     */
    public Point getLocation() { ... }
    

    【讨论】:

    • JavaDoc自动继承父类文档,所以{@inheritDoc}不是必须的
    • 是的,绝对正确,我会将其添加到我的答案中。文档说The Javadoc tool has the ability to copy or "inherit" method comments in classes and interfaces under the following two circumstances. Constructors, fields and nested classes do not inherit doc comments.
    • 在 Eclipse 中很有用。但是,我认为不需要 {}。
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 2011-07-05
    • 2011-04-06
    • 2016-11-15
    • 2015-03-20
    • 2010-09-20
    • 2015-10-09
    相关资源
    最近更新 更多