【发布时间】:2011-02-17 00:42:43
【问题描述】:
将我的所有导入转换为static import 有多重要?为什么人们仍然不愿意使用static import?
【问题讨论】:
将我的所有导入转换为static import 有多重要?为什么人们仍然不愿意使用static import?
【问题讨论】:
正如文档所说,使用它sparingly。在那里寻找理由。
【讨论】:
这是一个特殊情况,但也是完美的用例(我在所有测试中都使用它):
import static junit.framework.Assert.*;
在这里,我发现这使我的测试更具可读性,很明显assertXXX 的来源。但这是一个例外。在其他情况下,我发现静态导入会使事情变得更加晦涩难懂,而且我并没有真正使用它们。
【讨论】:
我在使用 JUnit 的断言 (import static org.junit.Assert.*;) 以及当我有一个与相关类非常相关的 enum 时使用静态导入。
例如:
枚举文件:
public enum MyEnum {
A, B, C;
}
类文件:
import static MyEnum.*;
public class MyClass {
MyEnum e;
public setE(MyEnum newE) {
if ( newE == A ) {
// some verification
}
e = newE;
}
}
注意我是如何做到newE == A,而不是newE == MyEnum.A。如果您在整个代码中执行大量此类操作,就会派上用场。
【讨论】:
我想说,永远不要使用通配符静态导入。
没有通配符,根据需要,我认为它确实减少了混乱。
【讨论】:
我只在最明显的情况下使用static import。请记住:简洁的代码并不总是与可读的代码相同。
【讨论】:
如果您使用的是 IDE,则首选使用 static import。
【讨论】:
转换现有的工作代码根本不重要,实际上这只是不必要的成本和风险。
您可以考虑将它用于新代码,如果您能找到它的引人注目的用途。我还没有,但我可能会......
【讨论】: