博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为什么Java文档中的java.time.DayOfWeek的常量显示是从 FRIDAY开始?
阅读量:6003 次
发布时间:2019-06-20

本文共 2085 字,大约阅读时间需要 6 分钟。

  最近碰到一件很有趣的事情,工作中需要处理有关一周中某个工作日的信息,正好Java8提供了一个DayOfWeek现成的类,奇怪为什么这么基本的类Java8才提供,这是后话。

既然要用DayOfWeek这个类,就先看看它的文档:

A day-of-week, such as 'Tuesday'. DayOfWeek is an enum representing the 7 days of the week - Monday, Tuesday, Wednesday, Thursday, Friday, Saturday and Sunday.
docs.oracle.com

DayOfWeek是个枚举类,下面是它的常量总结:
Enum Constant Summary
Enum Constants
Enum Constant and Description
FRIDAY
The singleton instance for the day-of-week of Friday.
MONDAY
The singleton instance for the day-of-week of Monday.
SATURDAY
The singleton instance for the day-of-week of Saturday.
SUNDAY
The singleton instance for the day-of-week of Sunday.
THURSDAY
The singleton instance for the day-of-week of Thursday.
TUESDAY
The singleton instance for the day-of-week of Tuesday.
WEDNESDAY
The singleton instance for the day-of-week of Wednesday.
奇怪,怎么文档中常量是从Friday开始,难道Friday的顺序数是1?
继续往下读文档,顺序数1是Monday,而不是Friday。
再继续读了一下DayOfWeek源码,没错,一个星期的7天是从Monday到Sunday顺序的,并且从Monday的顺序数1排到Sunday的顺序数7.
这是怎么回事?

仔细看了一下DayOfWeek的“Constant Summary”, 发现从FRIDAY到WEDNESDAY是字母排序,又看了它的“Method Summary”, 也是字母排序,莫非Java文档的概述部分都是字母排序

又看了下DayOfWeek紧邻的Calendar的文档,果然是,变量,方法,构造器的概述部分都是字母排序,而后面具体说明就不是字母排序了。

 

原因在此:

原来缺省的javadoc输出内容和格式的工具doclet使用了Collections.sort()来排序常量, 域, 成员和方法的Summaries,源码见下面链接:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/com/sun/tools/doclets/internal/toolkit/builders/EnumConstantBuilder.java?av=h#EnumConstantBuilder

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/com/sun/tools/doclets/internal/toolkit/builders/FieldBuilder.java?av=h#FieldBuilder

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/com/sun/tools/doclets/internal/toolkit/builders/MemberSummaryBuilder.java?av=h#MemberSummaryBuilder

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/com/sun/tools/doclets/internal/toolkit/builders/MethodBuilder.java?av=h#MethodBuilder

这肯定是有意为之, 因为这种字母排序方便了读者对相应变量方法的查找, 也利于自动查找。

然而从另一方面而言, 也会造成像DayOfWeek这种让读者感觉奇怪的常量说明, 只不过类似这种情形大家见的不多罢了。

转载于:https://www.cnblogs.com/yanlongpankow/p/7713106.html

你可能感兴趣的文章
【收藏】常用JavaScript正则表达式汇编与示例
查看>>
笔记:PostgreSQL 、Node.js 、函数计算
查看>>
JavaScript设计模式之中介者模式
查看>>
Android 进阶路线(思维导图)
查看>>
C++ 获取桌面(Desktop)选中项
查看>>
干货:mysql索引的数据结构
查看>>
LeetCode 1 Two Sum 两数相加
查看>>
从零开始的微信支付接入(一)用户认证
查看>>
Android DDMS查看Threads情况
查看>>
连接远程桌面提示: 之前用于连接到的凭据无法工作...的解决办法
查看>>
linux何检查一个目录是否为空目录
查看>>
压缩介绍、bz2、gz、xz压缩工具
查看>>
StretchRect...果然和文档上说的一样
查看>>
Python成生随机KEY工具
查看>>
将一个数组拆分为几个至少三个元素的递增子序列
查看>>
备忘,解决WIN10下COM注册问题
查看>>
SAP移动解决方案在零售行业的应用方案及案例分享
查看>>
cx_Oracle install
查看>>
jquery ajax从后台获取数据
查看>>
基于Windows平台TSM 6.x版本下,如何删除初始化失败的实例。
查看>>