java 枚举内嵌枚举_高度有用的Java ChronoUnit枚举

java 枚举内嵌枚举

几年前,我发表了博客文章“ The Highly有用的Java TimeUnit Enum ”,其中介绍了JDK 5引入的TimeUnit枚举。 JDK 8引入了一个更新的枚举ChronoUnit ,它比TimeUnit更适合于并发以外的上下文(例如日期/时间操作)。

位于所述java.time.temporal包 ,所述ChronoUnit类实现TemporalUnit接口 ,接口广泛使用的在高度期望 JDK 8导入日期/时间API 。 博客文章“ Java 8中的日期之间的天数 ”演示了使用此类来计算两个Temporal实例之间的时间段 。

博客文章“ Java 9.硬编码“永远”的地方。 ”介绍了JDK 9的“ TimeUnit类中的两个新方法” 。toChronoUnit()和of(ChronoUnit)这些方法支持将TimeUnit转换为ChronoUnit以及将ChronoUnitTimeUnit 。 并非ChronoUnit所有值都可以转换为TimeUnit的等效值,在这种情况下,将抛出IllegalArgumentException 。

关于ChronoUnit中每个值的Javadoc注释描述了每个值代表什么时间单位。 但是,对ChronoUnit每个值返回什么样的Duration ,这对我来说很有趣。 以下代码段会将这些DurationtoString()表示形式写入ChronoUnit枚举中的所有值的标准输出。

显示计时单位的持续时间

for (final ChronoUnit unit : ChronoUnit.values())
{final Duration duration = unit.getDuration();out.println(unit + ": " + duration + " (" + duration.getSeconds() + " seconds)");
}

执行后,以上代码将产生以下输出:

Nanos: PT0.000000001S (0 seconds)
Micros: PT0.000001S (0 seconds)
Millis: PT0.001S (0 seconds)
Seconds: PT1S (1 seconds)
Minutes: PT1M (60 seconds)
Hours: PT1H (3600 seconds)
HalfDays: PT12H (43200 seconds)
Days: PT24H (86400 seconds)
Weeks: PT168H (604800 seconds)
Months: PT730H29M6S (2629746 seconds)
Years: PT8765H49M12S (31556952 seconds)
Decades: PT87658H12M (315569520 seconds)
Centuries: PT876582H (3155695200 seconds)
Millennia: PT8765820H (31556952000 seconds)
Eras: PT8765820000000H (31556952000000000 seconds)
Forever: PT2562047788015215H30M7.999999999S (9223372036854775807 seconds)

上面显示的每个Duration字符串表示形式上的“ PT”前缀表示根据ISO-8601标准 ,该表示形式是“期间”持续时间标记(“ P”)和“时间”指示(“ T”)。 “ S”,“ M”和“ H”分别是秒,分钟和小时。 的值ChronoUnit代表时间单位小于秒( NANOS , MICROS ,和MILLIS )示出了“0秒”,因为它们是小于1秒,返回值是一个整体long

关于ChronoUnit类中定义的每个值的Javadoc注释编写得很好。 它们遵循我的想法,是Javadoc的“最佳实践”:在Javadoc中放置简洁但内容丰富的初始句子,以显示在生成HTML页面的“方法摘要”部分中,并在该初始摘要之后的句子中放置其他有用的详细信息句子。 例如, ChronoUnit.ERAS的Javadoc注释指出:“ 代表时代概念的单位。 ISO日历系统没有纪元,因此不可能在日期或日期时间中添加纪元。 人为地将时代的估计持续时间定义为1,000,000,000年。 与其他日历系统一起使用时,该装置没有任何限制。” “方法摘要”中显示的是加粗的句子(我加了强调),此处显示的全部文本完整显示在方法上方。

ChronoUnit枚举中,更有趣的值之一是FOREVER 。 如上面代码清单的输出所示, FOREVER值的Duration为“ PT2562047788015215H30M7.999999999S”,对应于2562047788015215小时,30分钟和7.999999999秒。 或者,正如Grzegorz Gajos所说的那样,“ Java 永远将其定义为9 223 372 036 854 775 807秒。 这是2.92277266×10 11年。 最好确保在超时之前安排在应用程序中进行Java升级。”

ChronoUnit.FOREVER会有用? 其基于Javadoc的描述解释了其存在的主要原因:“代表永远概念的人工单位。 这主要与TemporalField一起使用,以表示无限制的字段,例如年份或时代。 人为地将时代的估计持续时间定义为Duration支持的最大持续Duration 。”

TimeUnit是使用Java的并发构造的有用枚举 ,并且可以在并发以外的其他上下文中使用,只要考虑了对这些其他上下文的一些严格限制即可。 JDK 8引入的ChronoUnit对于这些非并发上下文来说是一个更好的枚举,并且特别设计用于JDK 8 Date / Time API

翻译自: https://www.javacodegeeks.com/2018/01/highly-useful-java-chronounit-enum.html

java 枚举内嵌枚举

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

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

相关文章

Chrome for Mac OS 的 快捷键

文章目录页面滚动其它页面滚动 快捷键功能说明Command ↑滚动到网页的顶部Command ↓滚动到网页的底部 其它 快捷键功能说明Shift Command [ 或 Shift Command ]左右切换标签页,到最后一个会重新循环Option Command ← 或 Option Command →左右切换标签页…

oracle分页包,Oracle分页获取数据的实现 (包和存储过程)

本文档主要是介绍针对oracle数据库中利用包和存储过程来实现分页获取数据的内容。其实该存储过程的主题思想及主要实现我也是从网上找的,自己做了整合。包括包头声明和包体实现部分以及C#代码具体调用部分,共大家参考并提出改进意见。本包中包括两个分页…

python-opencv 最快的遍历颜色空间_居住空间设计的七种设计风格

生活中每家每户的家居样式都是不一样的,它们都是各有各的风格。在居住空间设计中,设计师会根据居住者的风格喜好来定制相应的设计方案,以及融入设计师的风格特点来创造出独特的设计风格,那么让我看看都有哪些设计风格吧。传统风格…

java更好的语言_五个使Java变得更好的功能

java更好的语言我偶然发现了Brian Goetz 提出的有关Java数据类的建议 ,立即意识到我也对如何使Java更好地成为一种语言有一些想法。 我实际上有很多,但这只是五个最重要的简短列表。 专制(2006),迈克贾奇(…

Linux 初始化系统(系统服务管理和控制程序/Init System) -- System V init(SysV init) 的简单理解

文章目录SysV init 简介SysV init 的缺点运行级别主要文件和目录的截图SysV init 简介 System V init(缩写 SysV init)是类 Unix 操作系统中传统的也是首款初始化系统。 服务配置文件(bash 脚本文件)存放在目录 /etc/init.d 下 …

oracle查询file_name,Oracle DG环境下db_file_name_convert的实际意义

关于DG环境下备库数据文件重命名的问题:**前言:**主要想表明DG环境下备库数据文件重命名的问题,以及db_file_name_convert与log_file_name_convert的作用。**实验证明:**主库为备库备份一份控制文件RMAN> backup current controlfile for …

python收集数据程序_用一行Python代码进行数据收集探索!Python真牛逼!

简易的Pandas之路 任何使用P ython数据的人都会熟悉Pandas包。P andas是大多数行和列格式数据的go-to包。 如果你没有Pandas,请确保在终端中使用pip install安装: pip install pandas 现在,让我们看看Pandas包中的默认方法可以做些什么&#…

java使用缓冲区读取文件_在Java中使用Google的协议缓冲区

java使用缓冲区读取文件最近发布了 有效的Java第三版 ,我一直对确定此类Java开发书籍的更新感兴趣,该书籍的最新版本仅通过Java 6进行了介绍 。 在此版本中,显然存在与Java 7 , Java 8和Java 9密切相关的全新项目,例如…

浅析 Linux 初始化系统(系统服务管理和控制程序/Init System) -- sysvinit/systemvinit(System V init)

文章目录从 sysvinit 到 systemd什么是 init 系统,init 系统的历史和现状sysvinit 概况运行级别sysvinit 运行顺序sysvinit 和系统关闭sysvinit 的管理和控制功能haltinitkillall5lastlastbmesgpidofpoweroffrebootrunlevelshutdownsulogintelinitutmpdumpwallsysvinit 的小结从…

php /usr/lib/libjpeg.so.62,linux PHP的装配

linux PHP的安装2. 红帽Linux PHP2.1. 安装linux PHP查看系统是否自带了php,若自带先卸载,否则安装后会出错。(1)下载php源文件php-5.3.6.tar.gz,地址为http://cn2.php.net/downloads.php(2)执行如下命令,解压源文件,以…

linux多用户运行同一程序_linux系统中CentOS有哪些优势,让它长盛不衰?

CentOS是目前评价和口碑都不错的linux系统,甚至很多公司安装的都是CentOS系统,对于初入门的小白可能不了解这个系统,今天我们就整理一下CentOS系统的七大优势。1. 开源、免费众所周知,不管是微软的 Windows 还是苹果的 macOS&…

代码注释掉还能执行_日志消息是可执行代码和注释

代码注释掉还能执行尽管在一个人的代码中应添加多少注释之间存在意见分歧,但我认为可以肯定地说,大多数开发人员都同意以下代码段中的注释是多余的: // increment the total total;在该示例中,代码很简单,而且实际上是…

浅析 Linux 初始化系统(系统服务管理和控制程序/init system) -- UpStart

文章目录一、Upstart 简介(一)开发 Upstart 的缘由(二)Upstart 的特点二、Upstart 概念和术语(一)Job(二)Job 生命周期(三)事件 Event1.Signals2.Methods3.Ho…

php如何在类的外部修改成员属性,php中如何在外部修改类的私有或受保护属性值...

php中怎么在外部修改类的私有或受保护属性值在做单元测试框架时,发现了个比较郁闷的问题:测试人员需要在类外修改类的private或protected成员变量的值,而这些变量没有抽象成public的属性,同时为了代码量的问题,也不可能…

telnet到设备里 php_金融行业思科设备典型网络故障案例:76系列典型案例(一)...

一、Cisco 7606主备引擎自动切换01故障现象某行上联路由器cisco7606 x月x日引擎自行切换,这种情况是第一次发生,至今仍是备引擎是active,主引擎是standby。02分析过程思科TAC提取了log日志和crashinfo信息:Previous engine detect…

白盒测试方法静态分析_静态分析的教育方面

白盒测试方法静态分析加入我们项目的新程序员经常问我们是否有自动格式化工具,以使Java代码看起来完全像Qulice期望的那样。 (Quili是我们使用的静态分析器。)我总是回答说,拥有这样一个自动代码抛光器只会有害,并且不…

php 去除图片黑边,C#_c#扫描图片去黑边(扫描仪去黑边),自动去除图像扫描黑边复制代 - phpStudy...

/// /// 自动去除图像扫描黑边/// /// public static void AutoCutBlackEdge(string fileName){//打开图像Bitmap bmp OpenImage(fileName);RemoveBlackEdge(bmp);//保存图像SaveImage(bmp, fileName);}private static byte[] rgbValues; // 目标数组内存/// /// 图像去黑边//…

《标准普通话教程》中对平舌音的发音方法的说明

《标准普通话教程》中关于平舌音的发音方法的描述: 第一个版本:大部分教材和老师 平舌音发音时,舌尖放在下齿背(下齿龈) 第二个版本:少部分教材和老师 平舌音发音时,舌尖放在下齿背&#xff0…

java javadoc_使用Java 9向Javadoc搜索添加术语

java javadoc有一个相对较旧的网页,称为“ Proposed Javadoc Tags ”,最初似乎是与Javadoc 1.2一起编写的,其中列出了“ Sun有朝一日可能会在Javadoc中实现的标签”。 在此列表中的标签是category , example , tutoria…

oracle system用户创建job 其他用户,oracle创建表空间、用户和表以及sys和system的区别...

一、oracle的3个内置账号(口令管理)scott(示范账户) tiger 内置账号system 系统管理员 操作用户sys 超级管理员 操作数据conn system/sasa;show user登录超级用户conn a/b as sysdba 或者 sysopera/b任何账号密码都可以(只能在服务端(安装数据的电脑)上运行更改用户密码&#x…