Answers:
请参阅文档
静态导入声明类似于普通导入声明。正常的导入声明从包中导入类,从而允许它们在没有包限定的情况下使用,而静态导入声明从类中导入静态成员,从而允许它们在没有类限定的情况下使用。
那么什么时候应该使用静态导入呢?非常谨慎!仅当您打算以其他方式声明常量的本地副本或滥用继承(常量接口反模式)时,才使用它。换句话说,当您需要频繁访问一两个类的静态成员时,请使用它。如果您过度使用静态导入功能,它将使您的程序无法读取和不可维护,并使用您导入的所有静态成员污染其名称空间。代码的读者(包括您,在编写代码几个月后)不会知道静态成员来自哪个类。从类中导入所有静态成员可能对可读性特别有害;如果只需要一个或两个成员,则分别导入它们。适当地使用静态导入,可以使您的程序更具可读性,
静态导入用于导入类的静态字段/方法,而不是:
package test;
import org.example.Foo;
class A {
B b = Foo.B_INSTANCE;
}
你可以写 :
package test;
import static org.example.Foo.B_INSTANCE;
class A {
B b = B_INSTANCE;
}
如果您经常在代码中使用另一个类中的常量,并且静态导入不是模棱两可的,这将很有用。
顺便说一句,在您的示例中,“ import static org.example.Myclass;” 将不起作用:import用于类,import static用于类的静态成员。
静态导入的基本思想是,每当您使用静态类,静态变量或枚举时,都可以导入它们并避免键入。
我将举例说明。
import java.lang.Math;
class WithoutStaticImports {
public static void main(String [] args) {
System.out.println("round " + Math.round(1032.897));
System.out.println("min " + Math.min(60,102));
}
}
相同的代码,带有静态导入:
import static java.lang.System.out;
import static java.lang.Math.*;
class WithStaticImports {
public static void main(String [] args) {
out.println("round " + round(1032.897));
out.println("min " + min(60,102));
}
}
注意:静态导入会使您的代码难以读取。
import static java.lang.Math
没有星号写什么意思?
将import
允许Java程序员包的接入类,而包的资格。
该static import
功能允许在没有课程资格的情况下访问课程的静态成员。
所述import
的类提供可访问性和接口而static import
提供可访问到类的静态成员。
范例:
带进口
import java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
System.out.println("Hello");
System.out.println("Java");
}
}
与静态导入
import static java.lang.System.*;
class StaticImportExample{
public static void main(String args[]){
out.println("Hello");//Now no need of System.out
out.println("Java");
}
}
另请参阅:什么是Java 5中的静态导入
之后的static
修饰符import
用于检索/使用类的静态字段。我使用的一个领域import static
是从类中检索常量。我们还可以应用import static
静态方法。确保输入正确,import static
因为输入static import
错误。
什么是static import
Java中- JavaRevisited -一个很好的资源更多的了解import static
。