Java的String.format可以静态导入

JDK-8203630 [“为String :: format添加等效的实例方法”]假定“将String :: format实现为静态的参数似乎是可以静态导入 format方法,因此其行为与C的sprintf比较 。” 在有关该主题的StackOverflow.com线程上 , Brandon Yarbrough写道:“通过使该方法静态化,您可以使用格式,这对于习惯于printf() C程序员来说是非常熟悉和简洁的。” Yarbrough提供了一个代码示例,然后得出结论:“通过使用静态导入,printf看起来几乎就像它们在C中一样。太棒了!”

当我在JDK-8203630中阅读有关此内容的内容时,我想知道为什么我在使用它时没有静态导入String.format ,因为现在看来这样做很明显。 在本文中,我将简要介绍一些我考虑过的个人理论,以解释为什么我(以及许多其他人)并未考虑一致地静态导入String.format

当J2SE 5引入静态导入时, 有关该功能的新文档提出了一个问题:“那么什么时候应该使用静态导入?” 它以强调的方式回答了自己的问题(我没有加粗体 ),“ 非常谨慎! ”然后,该段继续提供了更多有关静态进口的适当和不当使用以及过度使用静态进口的负面影响的详细信息。

尽管原始文档着重警告过度使用静态导入,但是随着开发人员逐渐习惯了静态导入,它们的使用确实在逐渐增加。 2012年,我通过博客文章问道:“ Java越来越接受静态导入吗?” 那时,我感到它们越来越被接受,尤其是在单元测试环境中以及在专注于提供“ 流利 ” API的更现代的库和框架中使用它们时 。 仍然以某种方式,我不认为始终将静态导入应用于我的String.format使用。

我不经常使用String.format ,所以我认为也许我只是没有太多机会考虑这一点。 但是,即使我使用的次数相对较少,我也不记得曾经静态地导入过它。 当我进一步考虑这个问题时,我意识到我可能不考虑静态导入String.format的主要原因与大多数开发人员没有考虑的原因相同:大多数流行且易于使用的在线方法如何使用String.format示例请勿使用静态导入!

在撰写涵盖某功能的博客或文章时,尤其是在入门级别时,不要进行静态导入之类的操作会很有用,因为显式拼写出类名可以提高开发人员理解方法中的位置的能力。代码来自。 但是,这也意味着,如果给定的开发人员阅读了大量文章和帖子,并且其中没有一个显示使用静态导入,则该开发人员很容易使用所有这些示例中所示的API,而无需考虑静态导入的可能性。

以下是有关使用String.format一些介绍性文章。 在撰写本文时,他们还没有通过静态导入演示String.format使用。 我要强调指出,这并没有脱离这些资源的质量; 如果有的话,其中的一些很棒。 相反,这是用作解释为什么String.format似乎很少静态地以Java代码静态导入的证据。

  • 适用于java.util.Formatter的JDK 10 Javadoc声明“类似于C的sprintf(3) ,可以使用静态方法String.format格式化字符串”,然后使用String.format提供代码示例,而不是静态导入。
  • Baeldung的详细“ java.util.Formatter指南 ”提供了许多代码清单,这些清单证明了String.format使用,但是没有一个是静态导入的。
  • DZone详细的文章“ Java字符串格式示例 ”演示了如何使用String.format而不进行静态导入。
  • “ Java字符串格式示例 ”一文中的“ Java Code Geeks示例 ”以使用String.format而不静态导入的示例结尾。
  • 最近发布的“ 使用String.format方法进行Java String格式化(如'sprintf') ”提供了有用的讨论和示例,但并未讨论静态导入String.format
  • GeeksForGeeks的“ 带示例的Java String format() ”提供了String.format使用的多个示例,但是没有一个是静态导入的。
  • “ Java字符串格式示例 ”提供了不使用静态导入而应用String.format多个示例。
  • “ 用示例解释的Java String format()方法 ”不会在其多个示例中静态导入String.format
  • StackOverflow.com线程“如何用Java格式化字符串”中提供的示例不会静态导入String.format
  • “ Java String format()方法 ”的String.format()的多个示例不会静态导入它。

以上文章中的许多示例都使用String.format()生成分配给局部变量的String 。 在这种情况下,可以说静态导入的价值要小于在更大的代码行中使用它格式化String的价值。 例如,静态导入String.format()更为“流利”,这样,当在一行代码中进行格式化时,只需指定format()即可完成其他操作,而不仅仅是将格式化后的字符串分配给局部变量。

这篇博文的主要目的是指出/提醒我们可以静态导入String.format从而使我们的代码更具可读性。 但是,在关于该主题的OpenJDK core-libs-dev邮件列表的简短讨论中 ,还有其他一些有趣的观点,我将在这里简要指出:

  • JDK-8203630通过以下示例指出了在某些情况下实例方法如何使代码更具可读性: "This result is %d".format(result);
  • RémiForax指出了一些反对在String 中添加实例 format方法的参数 :
    • static方法和实例方法相关联的问题在类中共享相同的名称。

无论实例 format方法是否出现在Java的String ,有关JDK-8203444 , JDK-8203630以及相关邮件列表讨论的内容 ,为我提供了一些思考的机会。 如果没有其他问题,在考虑使用String.format时,我绝对会更倾向于权衡其性能,而在使用它时,将更有可能静态导入它。

翻译自: https://www.javacodegeeks.com/2018/05/javas-string-format-can-be-statically-imported.html

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

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

相关文章

微信朋友圈删除后服务器还有吗,删了的朋友圈还可以找回来吗

演示工具:手机型号:iphone12系统版本:ios14软件版本:微信7.0.20删除的朋友圈动态不能找回来。删除是从网络服务器上面把此信息删除了,是无法找回的,而已删除掉以后,好友那边此条动态也是同步删除…

mysql drop_mysql恢复drop掉的表

手贱drop了几个表,以为能从昨天的备份中恢复,结果发现最近两个月的备份都是空文件,因为备份脚本在两个月前改错了!难道就这样丢失两个月的数据?镇定镇定——先看看mysql的配置文件cat /etc/my.cnf发现如下字样说明有救…

修改网站首页批处理_几个神奇的批处理,万事不求人!

文字 | 配图 | 排版 |©老Y网站:www.youquhome.cn小白可能会问啥事批处理?批处理(Batch),也称为批处理脚本。是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件的…

全境封锁服务器维护 2018,全境封锁全域事件2018年8月活动什么时候开始_全域事件怎么玩...

本文给大家带来全境封锁全域事件2018年8月活动时间介绍,全境封锁全域事件三进击即将到来,想要刷面具的不要错过哦。全域事件三:进击重新回归了!开始时间:8 月 27 日周一结束时间:9 月 2 日周日参加这一次的全域事件将会…

linux下部署mysql数据库连接_Linux远程部署MySQL数据库详细步骤

Linux远程部署MySQL数据库,供大家参考,具体内容如下1.0 安装 yum install lrzsz -y 命令(导入外界压缩包插件(已下载无视即可))1.1 将mysql压缩包拷贝到 /usr/local 文件目录下进行解压:1.2 将导入的Mysql压缩包进行解压,输入:tar…

nginx 电子书_Nginx最详细的反向代理配置步骤,拿去不谢

点击“蓝字”关注我们#今日份技术干货#使用Nginx实现Web反向代理功能,实现如下功能:◆后端Web服务器两台,可以使用httpd实现◆Nginx采用轮询的方式调用后端Web服务器◆两台Web服务器的权重要求设置为不同的值◆最大失败次数为1,失…

wdcp安装mysql_安装wdCP,无法连接mysql,解决方法

安装wdCP,无法连接mysql,解决方法在ubuntu 12.04版本上安装wdCP,采用编译安装的方式,一路装下来最后悲催地报错了:ERROR 2002 (HY000): Cant connect to local MySQL server through socket /tmp/mysql.sock (2)无法连…

c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)

前接上一篇内容。如果是第一次捧场的小伙伴,为了您阅读的连贯性,烦请扫一眼《C# 基础知识系列- 14 IO篇 文件的操作(1)》。本篇是IO之文件操作的第二篇,介绍一下目录和路径的相关类。下一篇介绍如何通过流来操作文件。1.2 Directory和Directo…

开源软件加密授权方案_身份验证和授权作为开源解决方案服务

开源软件加密授权方案通过实施身份验证和授权(a&a)机制为所有用户数据设计集中式服务。 我将分享我的经验并最终确定解决方案的结论。 该设计包括客户端(Web应用程序)和服务器(A&A中心&#xf…

python如何设计系统界面教程_python中pycharm软件界面介绍与配置

知识回顾: 上节内容我们学习了下载和安装pycharm,从本节开始,我们很多情况下都会使用pycharm这个集成开发工具来开发一些小程序。 本节知识视频教程 文字教程讲解开始: 一、界面初始化 我们在使用pycharm这个工具的时候&#xff0…

mysql字段编码转换_mysql字符集编码转换

mysql库编码修改,库默认的编码为拉丁文,我创建的agilefant库编码也就是拉丁文的 不支持中文。整个操作过程切记务必先备份库再操作。mysql> show variables like collation_%;-----------------------------------------| Variable_name | Value |---…

怎么配置在谷歌和ie内核时使用不同的_重磅!微软竟然研发了谷歌内核的edge

走过路过不要错过点击蓝字关注我们很I高I兴I你I能I来小水GOOD NIGHT 希I望I你I别I离I开软件目录第三十九期▼物致于此小得盈满序言上周小编们期末考试已经结束了,从这周开始,推文将会开始有所更新,希望喜爱我们公众号的你们都还在。但由于小编…

Java 8过滤器,地图,收集和流示例

大家好,许多读者给我发了电子邮件,写了一篇有关Java 8的地图和过滤器功能的文章,因为他们发现它们难以理解和使用。 即使我以前同时写过有关map()和filter()的博客,我仍在写这篇文章…

使用mysql命令行的工具_[MySQL]命令行工具和基本操作

一 MySQL命令行工具 (查看帮助 ---help,或 -?)1)MySQLMySQL是一个简单的SQL外壳(有GNUreadline功能)。它支持交互式和非交互式使用。当交互使用时,查询结果采用ASCII表格式。当采用非交互式(例如,用作过滤器)模式时,结…

matlab simulink_MATLAB之Simulink(二)利用switch模块将正弦信号变为方波信号

##MATLAB之Simulink(二)##利用switch模块将正弦信号变为方波信号今天给大家展示一个simulink电路仿真,将正弦信号转化为方波信号。下面开始教程:1.首先直接在MATLAB命令行中输入simulink或者直接点击图标运行。2.新建一个空白编辑界面。3.打开模型库&…

web.xml.jsf_使用JSF 2.2功能来开发可滚动,可延迟加载的Ajax数据表

web.xml.jsf这次,我想与您分享我最近从JSF 2.2功能中学到的知识。 为此,我决定创建一个简单的ajax,可滚动,延迟加载的数据表。 请注意, 绝不这是相当大的库如Primefaces , RichFaces的或ICEFaces的 。 这只…

logistic回归 如何_R_语言 logistic回归分析

当涉及到二分类时,我们第一想到的就是logistic回归。前面也讲解过其他的二分类其的构建。本文主要分享logistic有关的二分类,无序多分类,有序多分类和条件logistic回归。本文因没有配图,略显枯燥,建议在运行本代码的过…

mysql 并发 锁表_MySQL中的锁(表锁、行锁) 并发控制锁

https://github.com/MrLining/mysql/wiki/MySQL%E4%B8%AD%E7%9A%84%E9%94%81%EF%BC%88%E8%A1%A8%E9%94%81%E3%80%81%E8%A1%8C%E9%94%81%EF%BC%89-%E5%B9%B6%E5%8F%91%E6%8E%A7%E5%88%B6%E9%94%816、 表锁差异MyISAM:只支持表级锁,用户在操作myisam表时&a…

jwt获取token_Koa开发之koa-jwt工作过程

最近的工作是开发一个分布式的服务系统,选用的环境是node开发环境,由于需要全面的进行异步开发所以使用Koa框架,开发Web服务需要对用户进行身份认证,所以就使用koa-jwt,为什么使用token这种方式网上有很多介绍token和s…

JDK 8 BigInteger精确缩小转换方法

在博客文章“ Java中Long到Int的精确转换 ”中,我讨论了使用Math.toIntExact(Long)来将Long精确地转换为int ,如果无法缩小转换范围,则抛出ArithmeticException 。 该方法是在JDK 8中引入的,后者还向BigIn…