将我的所有导入转换为static import
有多重要?为什么人们仍不愿意使用static import
?
答案 0 :(得分:15)
正如文档所说,使用它sparingly。看看那里的理由。
答案 1 :(得分:8)
这是一个特例,但也是一个完美的用例(我在所有测试中都使用它):
import static junit.framework.Assert.*;
在这里,我发现这使我的测试更具可读性,而assertXXX
来自哪里显而易见。但这是一个例外。在其他情况下,我发现静态导入会使事情变得更加模糊,难以阅读而且我并没有真正使用它们。
答案 2 :(得分:4)
我在使用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
。如果你在整个代码中做了很多这样的事情,那就派上用场了。
答案 3 :(得分:1)
我想说,永远不要使用通配符静态导入。
如果没有通配符,根据需要,我认为它确实可以减少混乱。
答案 4 :(得分:1)
我只在最明显的情况下使用static import
。请记住:简洁的代码并不总是与可读代码相同。
答案 5 :(得分:0)
如果您使用IDE,则首选使用static import
。
答案 6 :(得分:0)
转换现有的工作代码并不重要,事实上这只是一种不必要的成本和风险。
您可以考虑将其用于新代码,如果您能找到令人信服的用途。我还没有,但我可能......