Java的String.format可以静态导入

JDK-8203630 [“为String :: format添加等效的实例方法”]假定“将String :: format实现为静态的参数似乎是可以静态导入 format方法,因此其行为与Csprintf比较 。” 在有关该主题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代码静态导入的证据。

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值