![]() |
1
162
这是Sun发布该功能时的指南(强调原文):
( https://docs.oracle.com/javase/8/docs/technotes/guides/language/static-import.html 我想特别指出两个部分:
就我个人而言,我使用过这种语言功能 很少,而且几乎总是只使用常量或枚举,而不使用方法。对我来说,这种取舍几乎不值得。 |
![]() |
2
67
静态导入的另一个合理用途是JUnit4。在JUnit方法的早期版本中,例如
documents 这样使用它。 |
![]() |
3
30
Effective Java, Second Edition 在…的结尾 项目19 沉重地 使用实用程序类中的常量。我认为这个原则适用于常量和方法的静态导入。
这有优点也有缺点。它使代码更具可读性,但代价是丢失一些有关方法定义位置的即时信息。然而,一个好的IDE可以让您进入定义,所以这不是什么大问题。
编辑: 更新为更具体的方法,因为这就是这个问题所指的。无论导入什么(常量或方法),原则都适用。 |
![]() |
4
20
不知道为什么,但罗斯省略了最后一句话,其中提到了这一点 documentation he is referencing .
https://medium.com/alphadev-thoughts/static-imports-are-great-but-underused-e805ba9b279f 例如:
这是我认为大家都同意的最明显的情况
Utils类和枚举 在许多情况下,使用utils类时可以删除类名,从而使代码更易于阅读
不使用时的示例
|
![]() |
5
17
|
![]() |
6
11
颜色不太可能与其他颜色混淆。 |
![]() |
7
5
我建议使用 静态导入 “大量使用实用程序类中的常量” 类别 认为
允许您移植原始C代码并编写可读的内容,例如:
|
![]() |
8
3
在将大量数学代码从C/C++移植到java时,我使用“import static java.lang.Math.*”。数学方法将1映射为1,使得在没有类名限定的情况下更容易区分移植的代码。 |
![]() |
9
2
由于您刚才提到的问题,静态导入是Java唯一的新特性,我从未使用过,也不打算使用。 |
![]() |
10
2
我发现这在使用实用程序类时非常方便。
我可以:
当我在代码中多次使用此实用程序时,IMO会提高代码的可读性。 |
![]() |
11
2
谈论单元测试:大多数人使用静态导入来实现
嘲笑
当然,当使用您应该使用的唯一断言时
|
![]() |
12
1
它们有助于减少冗长,特别是在调用大量导入方法的情况下,并且本地方法和导入方法之间的区别很明显。 一个示例:涉及对java.lang.Math的多个引用的代码 另一个: An XML builder class 其中,在每个引用前加上类名将隐藏正在构建的结构 |
![]() |
13
1
我认为静态导入对于gettext风格的NLS来说是很好的。
这既可以将字符串标记为必须提取的字符串,也可以提供一种简单、干净的方法来用翻译替换字符串。 |
![]() |
14
1
有人可以马上知道哪个方法或属性来自静态导入,它隐藏了它所属类的信息。我不建议对作为模块组成部分的类使用静态导入,并提供静态和非静态方法,因为在这种情况下,了解哪个类提供特定的静态功能很重要。 |
![]() |
15
-1
您需要在以下情况下使用它们:
|
![]() |
16
-5
我尽可能地使用它们。如果我忘记了,我有IntelliJ设置来提醒我。我认为它看起来比完全限定的包名干净得多。 |