标准JDK 8 API文档的一个不错的功能之一就是能够查看所有或不同类别的方法,正如我在博客文章JDK 8 Javadoc Tweaked For Methods Listings中所讨论的那样。 尽管这种分类既方便又有用,但是与JDK 8中许多新类和程序包相关联的文本注释无疑更有用,尤其是当我们中的许多人开始采用JDK 8时。我看一些非常有用的示例这篇文章中的JDK 8 API文档。 在快速浏览JDK 8 Javadoc文档的过程中,对JDK 8完全陌生的任何人都必须学习有关JDK 8库的知识。

熟悉的String类文档中提供了JDK 8 API文档有用性的良好示例。 该类具有两个新的重载静态方法,即join(CharSequence,CharSequence…)和join(CharSequence定界符,Iterable元素) 。 Javadoc对这两个新方法的注释不仅解释了方法的行为,而且还通过演示使用方法的代码来说明它们。 这类似于我一直发现对String.substring(int,int)方法有帮助的Javadoc注释。

全新的StringJoiner类在类级Javadoc注释中包含其用法的代码示例。 其中一个代码示例似乎旨在简化“传统Java开发”,而第二个示例则应用了lambda表达式和流的功能 。

代码示例也广泛用于其他新类(至JDK 8)的Javadoc文档中,尤其是在java.util.streams包中。 java.util.stream.Collectors类的类级Javadoc文档提供了Collectors的7种潜在用途(例如累积和分组)的代码示例。 Stream接口在接口上提供了有用的JDK 8文档的示例。 有关应用Stream接口的文本详细信息,并附有一个简单的代码示例,该示例演示了“使用Stream和IntStream的聚合操作”。 java.util.stream包本身具有有关Streams的出色描述文本 ,其中包括一个使用Stream的简单示例,并对该示例进行了详细讨论。 java.util.stream的软件包文档进一步讨论了使用Streams的几个不同方面,例如流操作和管道,并行性,副作用和归约。

就像在使用JDK 8 lambda表达式时理解Streams很重要一样,在使用lambda表达式时理解功能接口也很有用,并且java.util.function包级描述提供了很好的概述。

带有启发性代码示例的基于Java的JDK 8文档的另一个很好的示例是Calendar.Builder的文档,我在JDK 8的Calendar.Builder中介绍了该类。

到目前为止,我所讨论的大多数基于JDK 8 Javadoc的文档都提供了代码示例,这些示例演示了所描述的包,类或接口的使用。 一些新的JDK API文档使用代码通过显示以前需要编写但被新功能替换的代码来演示新的API功能。 众所周知的Java Map接口中有很好的例子。 Java Map界面在JDK 8中指定了几个新方法,并且这些新JDK 8方法中的许多都包括Javadoc文档,该文档指示在JDK 8之前完成与新添加的方法相同的操作所需的代码。 例如,方法computeIfAbsent , computeIfPresent , forEach , getOrDefault和putIfAbsent方法都具有注释,这些注释提供了代码,以证明“默认实现等效”。 尽管这可能解释了Map实现的默认行为,但对于理解这些方法模拟或替换的JDK 8之前的代码的类型也很有用。

JDK 8引入了一个全新的Date / Time API,并且java.time软件包对API进行了很好的软件包级概述 。 这个全新软件包中的构造具有单独的级别注释,这些注释对于学习此API很有用。 示例包括Clock , Instant , LocalDateTime , Period和ZonedDateTime 。 封装级文档可以帮助澄清之间的关系LOCALDATE的 , LocalDateTime , 本地时间 , ZonedDateTime和即时 。

JDK 8 Javadoc不仅针对标准JDK API进行了更改。 JDK 8 对javadoc工具进行了一些增强,这将影响开发人员自己的Javadoc注释和代码。 注意-Xdoclint:none选项 (在Stephen Colebourne的博客文章“在JDK 8 Javadoc中关闭doclint”中提到)也很重要,可以防止破坏不符合“ W3C HTML 4.01 HTML”的Javadoc。 关于Javadoc Java SE 8增强功能的最后一个项目符号指出,此Javadoc HTML一致性合规性“在Javac中也可用,尽管默认情况下未启用该功能。” 该项目符号告诉我们,可以通过运行javadoc -X来了解有关-Xdoclint:none标志的更多信息。

结论

我有时会听到,当代码说明自己时,永远不需要注释。 我相信一定程度上是对的,但是JDK 8引入的有关程序包,类和接口及其方法的有用Javadoc注释的存在,将使JDK 8的采用比阅读这些构造的每个代码清单都快得多。将。 它强化了我的观点,即我们通常不需要对执行某些操作的特定代码行进行注释,但是大多数情况下确实需要对接口和协定进行注释。 在我的理想世界中,代码编写得如此好,以至于唯一必要的注释就是Javadoc样式注释( /** */ ),而我们只需要很少的///* */样式注释。 在可读性和可理解性方面,JDK 8延续了最近的JDK主要修订版中出现的趋势,该修订版对Javadoc注释进行了改进。

翻译自: https://www.javacodegeeks.com/2014/03/the-illuminating-javadoc-of-jdk-8.html

JDK 8的启发性Javadoc相关推荐

  1. JDK 10的摘要Javadoc标签

    JDK 10通过发行JDK-8173425 引入了Javadoc标签{@summary} (" Javadoc需要一个新标签来指定摘要."). 这个新标签允许开发人员显式指定Jav ...

  2. jdk 安全属性_系统属性的JDK 12 Javadoc标记

    jdk 安全属性 JDK 12 Early Access Build 20 ( 2018/11/15 )可用,可以用来试用新的Javadoc标签{@systemProperty} . 新的{@syst ...

  3. 系统属性的JDK 12 Javadoc标记

    JDK 12 Early Access Build 20 ( 2018/11/15 )可用,可以用来试用新的Javadoc标签{@systemProperty} . 新的{@systemPropert ...

  4. JDK, JRE和JVM的区别与联系

    #####JDK: java development kit, java开发工具包,针对开发者,里面主要包含了jre, jvm, jdk源码包,以及bin文件夹下用于开发,编译运行的一些指令器. ## ...

  5. java jdk 序列化_JDK 11:Java序列化的终结开始了吗?

    java jdk 序列化 在博客文章" 将Google的协议缓冲区与Java结合使用 "中,我引用了乔什·布洛赫(Josh Bloch)的第三版的有效Java ,他写道:" ...

  6. JDK 11:Java序列化的终结开始了吗?

    在博客文章" 将Google的协议缓冲区与Java结合使用 "中,我引用了乔什·布洛赫(Josh Bloch)的第三版的有效Java ,他写道:"没有理由在您编写的任何新 ...

  7. ubuntu下安装jdk

    安装1.5 sudo apt-get install sun-java5-jdk sudo update-alternatives --config java sudo update-alternat ...

  8. java docur,JavaDoc生成API详解

    一.综述 1.1 简介 Javadoc 是 Java 自带的一种工具,其可以从程序源代码中抽取类.方法.成员等注释形成一个和源代码配套的API帮助文档.也就是说,只要在编写程序时以一套特定的标记[Ta ...

  9. Maven项目自动更新/修复Javadoc

    文章目录 前言 问题描述 解决方案 小结 参考文献 前言 创作开始时间:2022年8月29日23:55:27 有时候修改了函数签名(比如参数)之后经常忘记同步修改javadoc,导致在用maven生成 ...

最新文章

  1. 单高斯分布模型GSM,高斯混合模型GMM
  2. matlab 仿照案例-目标检测
  3. C/C++指针函数和函数指针
  4. P4555-[国家集训队]最长双回文串【Manacher】
  5. pfSense 2.3.5发布!汉化包同步发布!
  6. 创建寄宿在Windows服务中的WCF服务
  7. python拉格朗日插值法_【统计学】拉格朗日插值法的一种python实现方式
  8. ETL工具学习以及安装部署
  9. 使用Keras打造一个实时可用交通标志识别App
  10. Vagrant安装CentOS7镜像
  11. 厉害了,用Python实现自动扫雷
  12. 《韩立刚计算机网络》第一章
  13. 比“虚幻4”还牛逼的游戏引擎 到底有多神奇?
  14. 136A.Presents
  15. 大数据有哪些基本特征?
  16. 二维泊松方程求解-SIP-最速下降法-共轭梯度
  17. html 抓取移动,网页采集提取数据教程,以自定义抓取方式为例 - 八爪鱼采集器...
  18. python绘制单列多色柱状图
  19. 与二次元老婆邂逅的游戏的创建过程(一)
  20. 百万级数据连表查询优化

热门文章

  1. android 新的布局,Android新布局方式ConstraintLayout快速入门教程
  2. 如何设置电脑自动锁屏_这个手机锁屏密码竟可以根据时间而变化!密码每分钟都会发生改变...
  3. 数据库编程——intro to JDBC
  4. spring react_使用Spring WebFlux构建React性REST API –第1部分
  5. apache spark_Apache Spark Job的剖析
  6. 通过OAuth 2.0和Okta使用安全的服务器到服务器通信构建Spring Boot应用
  7. lombok 简化代码_如何编写更少,更好的代码,或Project Lombok
  8. valhalla 插件_Valhalla项目的价值
  9. apache camel_使用Apache Camel进行负载平衡
  10. apache camel_Apache Camel的性能调整思路