接口方法javadoc注释_继承Javadoc方法注释

接口方法javadoc注释

尽管用于javadoc工具的JDK工具和实用程序页面通过实现和继承方法来描述Javadoc方法注释重用的规则,但是当实际上不需要使用{@inheritDoc}时,很容易不必要地显式描述注释继承,因为会使用相同的注释隐式继承。 Java 8 javadoc工具页面在“ 方法公共继承 ”部分描述了继承方法Javadoc注释的规则,而Java 7 javadoc工具页面在“ 方法注释的自动复制 ”部分类似地描述了这些规则。 这篇文章使用简单的代码示例来说明Javadoc方法注释继承的一些关键规则。

以下接口和类是精心设计的示例,将在本文中用于说明方法的Javadoc注释的继承。 一些继承/实现的方法包括它们自己的Javadoc注释,这些注释会完全或部分覆盖父/接口的方法注释,而其他方法只是重用父/接口的方法的文档。

草食界面

package dustin.examples.inheritance;/*** Marks animals that eat plants.*/
public interface Herbivorous
{/*** Eat the provided plant.** @param plantToBeEaten Plant that will be eaten.*/void eat(Plant plantToBeEaten);
}

食肉接口

package dustin.examples.inheritance;/*** Marks an Animal that eats other animals.*/
public interface Carnivorous
{/*** Eat the provided animal.** @param animalBeingEaten Animal that will be eaten.*/void eat(Animal animalBeingEaten);
}

杂食性界面

package dustin.examples.inheritance;/*** Eats plants and animals.*/
public interface Omnivorous extends Carnivorous, Herbivorous
{
}

胎生接口

package dustin.examples.inheritance;/*** Mammals that give birth to young that develop within* the mother's body.*/
public interface Viviparous
{/*** Give birth to indicated number of offspring.** @param numberOfOffspring Number of offspring being born.*/void giveBirth(int numberOfOffspring);
}

动物类

package dustin.examples.inheritance;/*** Animal.*/
public abstract class Animal
{/*** Breathe.*/public void breathe(){}/*** Communicate verbally.*/public abstract void verballyCommunicate();
}

哺乳动物类

package dustin.examples.inheritance;/*** Mammal.*/
public abstract class Mammal extends Animal
{
}

哺乳类

package dustin.examples.inheritance;import java.awt.*;/*** Mammal with hair (most mammals other than dolphins and whales).*/
public abstract class MammalWithHair extends Mammal
{/** Provide mammal's hair color. */public abstract Color getHairColor();
}

狗类

package dustin.examples.inheritance;import java.awt.Color;import static java.lang.System.out;/*** Canine and man's best friend.*/
public class Dog extends MammalWithHair implements Omnivorous, Viviparous
{private final Color hairColor = null;/*** {@inheritDoc}* @param otherAnimal Tasty treat.*/@Overridepublic void eat(final Animal otherAnimal){}/*** {@inheritDoc}* @param plantToBeEaten Plant that this dog will eat.*/@Overridepublic void eat(final Plant plantToBeEaten){}/*** {@inheritDoc}* Bark.*/public void verballyCommunicate(){out.println("Woof!");}/*** {@inheritDoc}* @param numberPuppies Number of puppies being born.*/@Overridepublic void giveBirth(final int numberPuppies){}/*** Provide the color of the dog's hair.** @return Color of the dog's fur.*/@Overridepublic Color getHairColor(){return hairColor;}
}

猫类

package dustin.examples.inheritance;import java.awt.Color;import static java.lang.System.out;/*** Feline.*/
public class Cat extends MammalWithHair implements Carnivorous, Viviparous
{private final Color hairColor = null;/*** {@inheritDoc}*/@Overridepublic void eat(final Animal otherAnimal){}@Overridepublic void verballyCommunicate(){out.println("Meow");}@Overridepublic void giveBirth(int numberKittens){}@Overridepublic Color getHairColor(){return hairColor;}
}

马类

package dustin.examples.inheritance;import java.awt.Color;import static java.lang.System.out;/*** Equine.*/
public class Horse extends MammalWithHair implements Herbivorous, Viviparous
{private final Color hairColor = null;/*** @param plant Plant to be eaten by this horse.*/@Overridepublic void eat(final Plant plant){}/****/@Overridepublic void verballyCommunicate(){out.println("Neigh");}/*** @param numberColts Number of colts to be born to horse.*/@Overridepublic void giveBirth(int numberColts){}@Overridepublic Color getHairColor(){return hairColor;}
}

下一个屏幕快照显示了包的内容,其中包括上面显示了代码清单的接口和类(并非包中的所有类和接口都显示了其代码清单)。

20161116-继承包javadoc

从方法的Javadoc角度来看,这里最感兴趣的三个类是DogCatHorse类,因为它们实现了多个接口并扩展了MamalWithHair ,后者扩展了Mammal ,后者扩展了Animal

下一个屏幕快照是在Web浏览器中呈现的Animal类的Javadoc的快照。

20161119-animaljavadoc-1

Animal类不会从超类继承任何方法,也不会从接口实现任何方法,对于本博客文章的主题而言,这不是很有趣。 但是,这里显示的其他类扩展了该类,因此很有趣的是看到其方法注释如何影响继承类的方法说明。

接下来的两个屏幕快照是在Web浏览器中呈现的MammalMammalWithHair类的Javadoc的快照。 关于Mammal任何意义,没有Javadoc注释,但是对于MammalWithHair引入的新方法,只有一个方法注释。

20161119-哺乳动物javadoc

20161119-哺乳动物与毛发方法摘要

接下来的三个屏幕快照是Web浏览器中的Javadoc文档子集的界面,其中包括HerbivorousCarnivorousOmnivorous Herbivorous的接口。 这些接口提供了方法的文档,这些方法将由实现这些方法的类继承。

20161119-草食性javadoc

20161119-肉食性javadoc

20161119-杂食性javadoc

有了为父类和接口显示的Javadoc方法文档,现在该看看为扩展这些类并实现这些接口的类方法生成的文档。

前面显示的Dog类中的方法通常将{@inheritDoc}与其他文本结合使用。 从扩展类和已实现的接口继承Javadoc注释方法的结果与Dog注释中提供的附加测试相结合,显示在下一个屏幕快照中。

20161119-狗javadocmethodsummary

20161119-狗javadocmethoddetailtop

20161119-dogjavadocmethoddetailbottom

屏幕快照的最后一组展示了Dog类的文档将其“父母”的文档与自己的特定文档混合在一起。 这不足为奇。 Dog类的方法通常从父类(基类和接口)显式继承Javadoc文档,但是Cat类除其eat方法(仅使用{@inheritDoc} )外,几乎没有对其方法的Javadoc注释。 下一个屏幕快照显示了从此类生成的Web浏览器输出。

20161119-catjavadoc方法摘要

20161119-猫javadocmethoddetail

Cat中没有应用Javadoc注释的方法会在生成的Web浏览器文档中显示,这些文档的文档是从其基类或接口继承的,而这些方法的文档包括短语“从类复制的描述:”或“从接口复制的描述: “ 作为适当的。 明确包含文档标记{@inheritDoc}的一个Cat方法确实复制了父方法的文档,但不包括“从...复制说明”消息。

Horse类的方法通常根本不记录在文档中,因此它们生成的文档包括消息“从...复制说明”。 Horse类的eat()giveBirth()方法会覆盖@param部分,因此生成的Web浏览器文档中的这两个方法的参数文档(在下一组屏幕快照中显示)特定于Horse

20161119-马法摘要

20161119-马法详细

20161119-马法详细底部

从上面的代码清单和该代码生成的文档的屏幕快照,可以通过扩展和实现类来观察方法Javadoc注释的继承。 这些观察结果也在javadoc工具文档中进行了描述:

  • Javadoc注释是从父类的方法和已实现的接口方法继承的,或者在没有指定文本的情况下隐式继承(根本没有Javadoc或空的Javadoc /** */ )。
    • javadoc文档 :“ javadoc命令允许在类和接口中继承方法注释,以填充缺少的文本或显式继承方法注释。”
  • 使用{@inheritDoc}明确指出应继承注释。
    • Javadoc文档 :“插入{@inheritDoc}的方法中的主要描述或内嵌代码@return@param ,或@throws标记注释。
  • 通过在方法注释内不同位置使用{@inheritDoc}标签,可以组合使用方法文档的隐式和显式继承。

鉴于上述观察结果和广告中所宣传的“ 方法注释算法 ”,从Javadoc生成HTML角度来看,编写Javadoc的一个很好的经验法则是在尽可能高的级别上定义一般注释,并允许自动继承扩展类和已实现接口的方法的Javadoc文档将出现,仅添加或覆盖方法的Javadoc文本的某些部分,这些部分对于澄清或增强对低级方法的描述是必需的。 这比在继承或实现层次结构中的所有方法上复制并粘贴相同的注释,然后将所有方法保持在一起更新更好。

这篇文章重点介绍了生成的Javadoc方法文档的Web浏览器演示。 幸运的是,最常用的Java IDE( NetBeans [ CTRL + hover ], IntelliJ IDEA [ CTRL + Q / 设置 ], Eclipse [ F2 / hover / Javadoc View ]和JDeveloper [ CTRL-D ])支持Javadoc的演示。遵循方法文档继承的相同规则。 这意味着Java开发人员通常可以编写较少的文档,几乎可以完全避免在继承和实现层次结构中重复文档。

翻译自: https://www.javacodegeeks.com/2016/11/inheriting-javadoc-method-comments.html

接口方法javadoc注释

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis java 监听_从零手写实现redis(四)添加监听器

前言java从零手写实现redis(一)如何实现固定大小的缓存?java从零手写实现redis(三)redis expire 过期原理java从零手写实现redis(三)内存数据如何重启不丢失?本节,让我们…

drill apache_如何指南:Apache Drill入门

drill apacheApache Drill是一个引擎,可以连接到许多不同的数据源,并为它们提供SQL接口。 它不仅是遍历任何复杂事物SQL界面,而且是功能强大的界面, 其中包括对许多内置函数和窗口函数的支持。 尽管它可以连接到可以使用SQL进行查…

mac mysql 重设密码_Mac下忘记mysql密码重新设置密码的图文教程

MySQL 文件在路径/usr/local/mysql下1, 在系统偏好设置中关闭 mysql : Stop MySQL Server2 ,打开终端进入路径  /usr/local/mysql/bin输入命令 sudo su, 然后输入开机密码。然后输入命令:./mysqld_safe –skip-grant-…

activiti 变量_如何在Activiti中使用瞬态变量

activiti 变量我们昨天发布的Activiti v6 Beta3中已经加入了很多需要的功能-临时变量。 在这篇文章中,我将向您展示一个示例,说明如何使用瞬态变量来覆盖一些以前不可能(或最佳)的高级用例。 到目前为止,Activiti中的…

erosa mysql_MySQL协议和canal实现

前言前面的文章里,我们了解到 canal 可以从 MySQL 中感知数据的变化。这是因为它模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,从而实现了主从复制。正是了解到这一点,笔者有两个问题便一直萦绕于心:它是如何…

HH SaaS电商系统的供应商系统设计

供应商信息结构图 供应商类型 商城的供应商划分为专享型、共享型两种,但是租户和店铺供应商则都是“专享型”的。 共享型供应商发布的商品归属供应商自己的,商品档案供应商才有资格管理,所以spu_base需要保存供应商id,有供应商id…

aws faas_带有AWS Lambda和Java的无服务器FaaS

aws faas什么是无服务器架构? 无服务器架构在由第三方完全管理的临时容器中运行自定义代码。 自定义代码通常只是完整应用程序的一小部分。 也称为函数 。 这为无服务器架构提供了另一个名称,即功能即服务 (FaaS)。 该容器是短暂的…

跨境商品的进口税额显示

跨境商品的采购类型有三种:直邮、保税、一般贸易,而一般贸易的商品已经清关入境了,虽然是跨境商品,但是无需再清关,所以商品详情页无需显示进口税相关信息。 直邮跨境商品显示的进口税信息如下图所示: 保税…

coreldraw x8段落_CDR X8设置自定义文字为默认字体(二)

通过上一篇文章的介绍,我们已经了解到了在CorelDRAW中如何自定义设置默认字体,相关阅读可参阅:CDR X8设置文字为默认字体。其实在CorelDRAW软件中给用户提供方式不止是一种,本文将介绍更多关于设置默认字体的方法。1. 打开CorelDR…

jhipster_JHipster入门,第3部分

jhipster欢迎回到本JHipster教程系列! 在第一部分中,我们介绍了如何创建整体应用程序。 在第二部分中 ,我们逐步创建了一个微服务应用程序(这有点复杂)。 对于那些正在努力使JHipster正常运转的人,我想着重…

jhipster_JHipster入门,第2部分

jhipster所以你回来了! 在本系列的最后一部分中 ,我们采用了单片路线创建了一个JHipster应用程序。 这是红色药丸路线; 生活几乎与您习惯的一样。 但是也许您喜欢挑战。 也许您想超越红色药丸并尝试蓝色药丸。 在这种情况下,Blue…

HH SaaS电商系统的虚拟资金账户(钱包余额)设计

文章目录方案一,将资金账户抽象出来虚拟资金账户余额流水记录实体方案二,用户表直接保存资金余额余额流水记录实体方案一,将资金账户抽象出来 虚拟资金账户 P.S. 如果机构代码和消费代码有区分类型,那么资金账户表中就不必保存“…

jhipster_jHipster入门,第1部分

jhipster因此,您想保持技术的领先地位,但对所有活动部件感到不知所措。 你真幸运! 这就是jHipster发光的地方。 如果您喜欢Ruby on Rails或Grails的方法来快速启动和运行应用程序,那么这可能是适合您的选择。 jHipster旨在使设置…

java基准测试_微基准测试进入Java 9

java基准测试我已经几个月没有在这里写文章了,这种例外还会继续。 我计划在明年三月左右恢复写作。 本文末尾的说明。 等待! 不完全是最后,因为您可以向下滚动。 它在文章结尾处。 继续阅读! 三年前,我在写有关Java编…

python周天为一周的开始_从两个月减肥四十斤说起,不懈坚持,才是一个人最核心的竞争力。...

大学毕业了十年,我的身材失控了十年。我对我的胖身材已经习以为常了十年了,我从来没想过改变,因为我也没有毅力改变。有一句话说的,人越胖,就越懒。因为我胖,所以我不跑步,我也不爱外出。只要你…

java实现线程的方式_java多线程实现的四种方式

java多线程实现的四种方式1、继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接口)2、实现Runnable接口,重写run方法3、实现Callable接口,重写call方法(有返回值)4、使用线程池(有返回值)1、继承Thread类,重写run方法…

本地运行flowable_在CockroachDB上运行Flowable

本地运行flowable什么是CockroachDB? CockroachDB是一个我一直关注了很长时间的项目。 这是一个开放源代码的Apache 2许可数据库( Github链接 ),该数据库在很大程度上汲取了Google Spanner白皮书的启发 。 它的核心是可水平扩展的…

win10禁用驱动程序强制签名_图文细说 win10系统未检测到第三个监视器的途径 -win10使用教程...

据统计调查,好多朋友都在为图文细说 win10系统未检测到第三个监视器的途径 的问题而烦恼,小编决定将解决的办法分享给大家。对于电脑菜鸟而言看到图文细说 win10系统未检测到第三个监视器的途径 是很无奈的,试着独自一个人解决图文细说 win10…

安装openstack_午餐前如何安装OpenStack Cloud

安装openstack图1. QuickStart的内部工作原理 云安装程序 如果我告诉您可以在必须停下来吃午餐之前进行OpenStack Cloud环境设置,该怎么办? 您会感到惊讶吗? 你今天可以做吗? 在大多数情况下,我敢打赌您的答案是不…