为什么Java文档中的java.time.DayOfWeek的常量显示是从 FRIDAY开始?

本文探讨了Java8中DayOfWeek枚举类的排序问题,解释了为何其常量显示为按字母顺序排列的原因,并介绍了javadoc工具如何通过Collections.sort()进行排序。

  最近碰到一件很有趣的事情,工作中需要处理有关一周中某个工作日的信息,正好Java8提供了一个DayOfWeek现成的类,奇怪为什么这么基本的类Java8才提供,这是后话。
既然要用DayOfWeek这个类,就先看看它的文档:
https://docs.oracle.com/javase/8/docs/api/java/time/DayOfWeek.html

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值