精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式

精简jdk包

帖子“ 紧凑数字格式出现在JDK 12中 ”已经成为有关Java subreddit线程的讨论主题 。 在那个线程中表达的与紧凑数字格式表示有关的问题涉及显示的精度数字和显示的紧凑数字模式。 可以通过使用CompactNumberFormat.setMinimumFractionDigits(int)来解决精度数字问题,该方法在“ 使用JDK 12紧凑数字格式使用最小分数数字 ”一文中进行了详细讨论。 这篇文章解决了第二个问题(不喜欢某些语言在预先构建的CompactNumberFormat实例中使用的紧凑模式)。

据我所能确定的(当然我可能会遗漏一些东西), CompactNumberFormat上没有任何方法可以在现有CompactNumberFormat实例上设置紧凑数字模式。 但是,如果使用CompactNumberFormat的构造函数获取CompactNumberFormat的实例(而不是使用NumberFormat的重载静态工厂方法之一),则可以通过该构造函数将紧凑数字模式提供给CompactNumberFormat的新实例。 这在下一个代码清单(也可以在GitHub上 )中得到证明。

/*** Provides an instance of {@code CompactNumberFormat} that has been* custom created via that class's constructor and represents an* alternate Germany German representation to that provided by an* instance of {@code CompactNumberFormat} obtained via the static* factory methods of {@code NumberFormat} for {@code Locale.GERMANY}.** @return Instance of {@code CompactNumberFormat} with customized*    alternate German compact pattern representations.*/
private static CompactNumberFormat generateCustomizedGermanCompactNumberFormat()
{final String[] germanyGermanCompactPatterns= {"", "", "", "0k", "00k", "000k", "0m", "00m", "000m", "0b", "00b", "000b", "0t", "00t", "000t"};final DecimalFormat germanyGermanDecimalFormat= acquireDecimalFormat(Locale.GERMANY);final CompactNumberFormat customGermanCompactNumberFormat= new CompactNumberFormat(germanyGermanDecimalFormat.toPattern(),germanyGermanDecimalFormat.getDecimalFormatSymbols(),germanyGermanCompactPatterns);return customGermanCompactNumberFormat;
}

上面的代码清单中有三项值得特别强调:

  1. CompactNumberFormat(String, DecimalFormatSymbols, String[])构造函数允许将String数组传递到实例以指定紧凑数字模式。
  2. 定义紧凑数字模式的String[]的性质在Javadoc中的CompactNumberFormat类中定义 ,该状态指出:“紧凑数字模式以一系列模式表示,其中每个模式用于格式化一系列数字。”



    • 相同的Javadoc提供了一个基于美国语言环境的示例,该示例提供了10 0到10 14范围内的这些值,而我在此处采用的就是该示例。
    • 可以提供多于或少于15个样式,但第一个提供的样式始终对应于10 0 。 Javadoc指出:“可以有任意数量的模式,它们严格基于索引,范围从10 0开始 。”
    • 为了在此进行演示,我根据对前面引用的subreddit线程的观察来调整了模式。 我对德语了解不多,但是基于SI的后缀的论点很有道理,无论如何这仅出于说明目的。
  3. 在此示例中,我从JDK为德国德语语言环境( Locale.GERMANY )提供的DecimalFormat实例中检索了CompactNumberFormat构造函数的其他两个参数。 这确保了我的CompactNumberFormat German实例的德国德语德语实例的小数模式和十进制格式符号将与与JDK提供的实例相关联的十进制模式和十进制格式符号相同。

上面的代码清单显示了对一个名为acquireDecimalFormat(Locale)的方法的调用,以获取JDK为Locale.GERMANY提供的DecimalFormat实例。 为了完整起见,接下来显示该方法。

/*** Provides an instance of {@code DecimalFormat} associated with* the provided instance of {@code Locale}.** @param locale Locale for which an instance of {@code DecimalFormat}*    is desired.* @return Instance of {@code DecimalFormat} corresponding to the*    provided {@code Locale}.* @throws ClassCastException Thrown if I'm unable to acquire a*    {@code DecimalFormat} instance from the static factory method*    on class {@code NumberFormat} (the approach recommended in the*    class-level Javadoc for {@code DecimalFormat}).*/
private static DecimalFormat acquireDecimalFormat(final Locale locale)
{final NumberFormat generalGermanyGermanFormat= NumberFormat.getInstance(locale);if (generalGermanyGermanFormat instanceof DecimalFormat){return (DecimalFormat) generalGermanyGermanFormat;}throw new ClassCastException("Unable to acquire DecimalFormat in recommended manner;"+ " presented with NumberFormat type of '"+ generalGermanyGermanFormat.getClass().getSimpleName()+ "' instead.");
}

上面显示的代码片段演示了当不希望在给定Locale类的实例中关联的紧凑数字模式时,如何为CompactNumberFormat的给定实例定制紧凑数字模式。 如果CompactNumberFormat类上有一个方法可以覆盖与通过NumberFormat静态工厂类获得的现有实例相关联的部分或全部紧凑型数字模式, 那就很好了 ,但是JDK 12已经进入了下降阶段2 。

翻译自: https://www.javacodegeeks.com/2019/01/number-pattern-compact-number-formatting.html

精简jdk包

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

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

相关文章

两个数相乘积一定比每个因数都大_人教版五年级数学:因数、倍数与分数的整理与复习...

写在前面的话:因数与倍数和分数基本性质之间存在紧密的联系,可以将之放在一起学习,对分数基本性质的学习有促进作用,分数的基本性质对分数的加法和减法也非常重要,因此可以放在一起学习、复习。【整理与复习】因数与倍…

Linux中在zsh下如何安装autojump

文章目录介绍安装介绍 autojump is a faster way to navigate your filesystem. It works by maintaining a database of the directories you use the most from the command line. Directories must be visited first before they can be jumped to. 关于 autojump 有以下几个…

fork join框架_Java中的Fork / Join框架的简要概述

fork join框架Fork / Join框架是使用并发分治法解决问题的框架。 引入它们是为了补充现有的并发API。 在介绍它们之前,现有的ExecutorService实现是运行异步任务的流行选择,但是当任务同质且独立时,它们会发挥最佳作用。 运行依赖的任务并使用…

3模型大小_Github推荐一个国内牛人开发的超轻量级通用人脸检测模型

Ultra-Light-Fast-Generic-Face-Detector-1MB1MB轻量级通用人脸检测模型作者表示该模型设计是为了边缘计算设备以及低功耗设备(如arm)设计的实时超轻量级通用人脸检测模型。它可以用于arm等低功耗计算设备,实现实时的通用场景人脸。检测推理同…

macOS如何使用命令启动服务/停止服务/查看服务

文章目录开启服务停止服务查看服务是否启动开启服务 使用命令开启 sshd 服务: $ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist注:成功启动不会有任何输出 停止服务 $ sudo launchctl unload -w /System/Library/LaunchDaemons/s…

如何在用例之间传递值_如何从0搭建自己的自动化测试体系

大家好,我是爱吃面条,今天给大家讲讲如何从0搭建自己的自动化测试体系1. 需求和目标在我开展自动化测试之前,其实该项目以前的测试人员也已经写了很多的接口测试用例,但是大多数用例处于“半瘫痪”状态,在CI上无人维护…

envoy api 网关_为Envoy构建控制平面的指南-特定于域的配置API

envoy api 网关建立您的控制平面交互点和API表面 一旦考虑了哪些组件可能构成控制平面体系结构(请参见上一章),您将要确切考虑用户将如何与控制平面进行交互,甚至更重要的是, 用户将是谁? 要回答这个问题&a…

异步非阻塞_细说同步异步、阻塞非阻塞

同步、异步同步、异步分别指的是一种通讯方式,当 cpu 不需要执行线程上下文切换就能完成任务,此时便认为这种通讯方式是同步的,相对的如果存在cpu 上下文切换,这种方式便是异步。这里通过一个去食堂打饭的示例来理解什么是同步、异…

如何将网页部署到maven_如何通过Rultor将Maven工件部署到CloudRepo

如何将网页部署到maven在我以前的文章中 ,我描述了如何在Amazon S3中设置私有Maven存储库并通过Rultor进行部署。 如果您熟悉管理Amazon Web Services(AWS), S3和AWS Identity and Access Management(IAM)的…

macOS下如何使用命令启动数据库/停止数据库/重启数据库(MySQL)

文章目录启动数据库手动启动数据库自启动数据库查看数据库服务是否启动重启数据库服务停止数据库服务注意使用 sudo 执行命令会报错,所以不要使用 sudo: sudo mysql.server start . ERROR! The server quit without updating PID file (/usr/local/var/…

table 多行 宽度不一致_layui table 中固定列的行高和table行高不一致

Pipe(点积叉积的应用POJ1039)Pipe Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9723 Accepted: 2964 Description ...cocos2d-x之CCMotionStreak类——2013-08-25 16在游戏的实现过程中,有时会需要…

java rest框架_比较Java REST文档框架

java rest框架决定在记录REST API时选择哪种Java框架可能很麻烦。 在本博文中,我们将简要比较我们自己使用的REST Web服务的三个文档框架,以及它们如何与Spring框架(这是Foreach中最常用的Java框架)集成。 这些是RESTful API建模语…

数据库的事务学习

文章目录事务四大特征多事务并发存在的问题事务隔离级别查询数据库的隔离级别设置数据库隔离级别1.事务里面的语句出错时并不会主动回滚,需要用户主动执行回滚指令 2.事务开始后,如果没有主动执行回滚或者提交指令,事务始终在执行中 3.事务执…

注解动态赋值_Java注解是如何玩转的,面试官和我聊了半个小时

作者:wind瑞 来自:JavaQ面试官:自定义的Java注解是如何生效的? 小白:自定义注解后,需要定义这个注解的注解解析及处理器,在这个注解解析及处理器的内部,通过反射使用Class、Method、…

阿里云服务器如何创建快照备份数据

文章目录创建快照快照收费你申请了阿里云服务器,其实就是申请了一个云盘,这个云盘安装了操作系统,你可以远程访问这个系统并使用该系统。我们可以给云盘创建快照,从而达到备份服务器数据的目的。创建快照 快照收费 如果您计划不再…

shebang_Java 11:运行单文件程序和“ shebang”脚本

shebang在Java 11中,对java启动器进行了增强,可以直接运行单文件源代码程序,而不必先编译它们。 例如,考虑以下仅添加其参数的类: import java.util.*; public class Add {public static void main(String[] args) {…

iShot快捷键

快捷键说明Option A选择截图区域Option Z截图光标下的窗口Option X截图整个屏幕Option D延时截图Option W开始录屏/结束录屏

日期格式化为yyyymmdd_Excel小技巧——如何将多行日期快速转换为数字文本

Hello~大家好,本来计划这一期给大家介绍一下如何根据身份证号快速获得性别信息的小技巧,但是在上一节内容如何将数字快速转换成日期格式发布后,就有朋友私信问我,可不可以再介绍一下将日期快速转换成数字文本的方法呢?…

顽皮狗 多线程分享_谁去过顽皮,谁去过尼斯? 圣诞老人为您提供Java 11建议!...

顽皮狗 多线程分享有没有想过圣诞老人如何为世界各地的孩子们提供节日礼物? 有20亿个孩子,每个孩子都有自己的愿望清单,他会在24小时内完成。 这意味着平均每个孩子43微秒,他需要检查每个孩子是否顽皮或好。 您无需再怀疑了。 我…

2021新交规超速处罚规定

1.时速超过限定时速不到10%的,给予警告; 2.在限速为50公里以下的道路,时速超过限定时速10%以上不到20%的(必须低于时速55公里),处50元罚款;超过限定时速20%以上不到50%的,处100元罚…