何时适合执行静态导入package.package.class?似乎没有什么能在Google上回答这个问题。
静态导入允许你写这个:
out.print("The result is ");
而不是这个:
System.out.print("The result is ");
这对我没有意义。如果我导入该类,为什么它的方法也不会被导入?
答案 0 :(得分:5)
使用静态导入可以转为:
double r = Math.cos(Math.PI * theta);
进入这个:
double r = cos(PI * theta);
静态导入告诉类这些方法的来源,因此在使用静态导入时,不需要在方法之前加上类名
答案 1 :(得分:1)
试试import static java.lang.System.out;
。您没有导入其'方法,而是导入其'静态out
成员变量。
答案 2 :(得分:0)
static import
是一种便利。如果您在代码中反复使用某些类的static
成员,静态导入将使您免于编写代码。
System.out.println
成为out.println
可能是最常见的用途之一,因为它通常与控制台调试和控制台应用程序相关联。但是,任何具有静态成员(方法或字段)的类都可以有效地使用。例如,如果大量使用Math
,静态导入该类将使您对数学函数的调用更简单。如果您经常调用单例类的方法,那么静态导入该类将允许您从Singleton.INSTANCE.method()
转到INSTANCE.method()
。
由于静态导入纯粹是为了方便起见,因此询问不适合何时使用而不是 使用它时更有意义。在以下情况下不应使用静态导入:
out.println
对Java开发人员来说非常熟悉,他们会立即假设它来自System
...所以不要静态导入一些名为“out”的其他字段方法“println”! cos
,sin
,tan
,pow
和朋友可以很明显地推断出来自Math
,尤其是在上下文中。一般情况下,我不会建议每个文件从多个类中静态导入,只是为了减少阅读代码时的混淆。 “foo(Bar b)
是来自Fizz
还是Buzz
?或等待,是否从其他地方导入?{”这不是你希望未来的开发人员问自己的问题;并且记住,你不会花很长时间忘记你为自己的代码做出的所有设计决定,所以对自己和其他人都要好!
答案 3 :(得分:0)
您可以在任何地方使用它,但它可能会降低代码的可读性。但是也有例外,例如,在JUnit测试中使用静态导入是普遍接受的做法
import static org.junit.Assert;
...
assertEquals(expected, actual);