当前位置: 首页 > 面试题库 >

重载方法的Javadoc重用

吕峰
2023-03-14
问题内容

我正在开发一个API,其中包含许多相同名称的方法,只是签名不同而已,这在我看来是很普遍的。它们都做相同的事情,不同之处在于,如果用户不想指定默认值,则它们会默认初始化各种值。作为一个容易理解的例子,考虑

public interface Forest
{
  public Tree addTree();

  public Tree addTree(int amountOfLeaves);

  public Tree addTree(int amountOfLeaves, Fruit fruitType);

  public Tree addTree(int amountOfLeaves, int height);

  public Tree addTree(int amountOfLeaves, Fruit fruitType, int height);
}

所有这些方法执行的基本动作是相同的;森林里种了一棵树。我的API用户需要了解许多重要事项,以了解如何为所有这些方法添加树。

理想情况下,我想编写一个Javadoc块,供所有方法使用:

  /**
   * Plants a new tree in the forest. Please note that it may take
   * up to 30 years for the tree to be fully grown.
   *
   * @param amountOfLeaves desired amount of leaves. Actual amount of
   * leaves at maturity may differ by up to 10%.
   * @param fruitType the desired type of fruit to be grown. No warranties
   * are given with respect to flavour.
   * @param height desired hight in centimeters. Actual hight may differ by
   * up to 15%.
   */

在我的想象中,工具可以神奇地选择将@params应用于每个方法,从而一次为所有方法生成良好的文档。

使用Javadoc,如果我理解正确的话,我所能做的基本上是将同一javadoc块复制并粘贴五次,每种方法的参数列表仅稍有不同。这对我来说听起来很麻烦,而且也很难维护。

有什么办法解决吗?对javadoc的某种扩展具有这种支持?还是有一个很好的理由为什么我错过了不支持此功能?


问题答案:

我不知道有什么支持,但是,我会用最多的参数完全使用javadoc方法,然后像这样在其他javadoc中引用它。我认为这已经足够清楚了,并且避免了冗余。

/**
 * {@code fruitType} defaults to {@link FruitType#Banana}.
 *
 * @see Forest#addTree(int, Fruit, int)
 */


 类似资料:
  • 问题内容: 我正在记录我已经开发的Java程序,并且想知道如果仅记录超类,是否将为继承的方法(被重写)生成JavaDoc? 如果我有一个用方法调用的类,而有一个用该方法重写的子类,那么如果Car类中没有放置Javadoc,Carss驱动方法中是否会包含Vehicles驱动方法的文档? 问题答案: [I]想知道如果我仅记录超类,是否将为继承的方法(被重写)生成JavaDoc? 是。如果在子类上没有j

  • 重载子类中重写的方法,我是重载父方法还是重载子类方法? 我大体上理解什么是超载和超驰。 重载-同一方法在同一个类中有不同的参数和可能的返回类型。 重写-子类中的方法签名与父类中的方法签名相同,但实现不同。 方法B.a(INTX)是重载a.a还是重载B.a?

  • Java 允许同一个类中定义多个同名方法,只要它们的形参列表不同即可。 如果同一个类中包含了两个或两个以上方法名相同的方法,但形参列表不同,这种情况被称为方法重载(overload)。 例如,在 JDK 的 java.io.PrintStream 中定义了十多个同名的 println() 方法。 这些方法完成的功能类似,都是格式化输出。根据参数的不同来区分它们,以进行不同的格式化处理和输出。它们之

  • 以下声明在科特林是合法的。 作为字节码,我们得到: 也可以从Kotlin调用这两个方法。 当我试图从Java调用它们中的任何一个时,问题就出现了: 模棱两可的调用。两种方法都匹配… 如何避免这样的问题?如何处理这些方法?若第三方kt库也有同样的问题怎么办? 上面的例子是一个合成的例子。

  • 在子类里,我们可以通过重载父类方法来改变实体的行为. ruby> class Human | def identify | print "I'm a person.\n" | end | def train_toll(age) | if age < 12 | print "Reduced fare.\n";

  • 我尝试了以下代码,但不理解输出: 输出:字符串 为什么? 感谢您的关注!