Java 8中的Java“静态导入”与“导入静态”
我试图在Java上使用静态导入,但我写错了
static import java.lang.System.out;
并编译代码(虽然找不到“out”符号),没有语法错误。
那么,“静态导入”实际上意味着什么呢?
这不应该编译。
static import java.lang.System.out;
根据JLS ,单个静态导入应如下所示:
import static java.lang.System.out;
所有forms的Java import语句都以 import
关键字开头 ,我认为没有任何其他上下文(即除了import语句之外)可以使用import
关键字。
注意: import
和static
关键字在此上下文中不是修饰符,因此“修饰符可以按任何顺序提供”元规则不适用于此处。
简而言之,您的编译器/ IDE会被破坏或混淆……或者您所看到的不是真正的Java源代码。
显然,这是一个错误。
我正在使用Sun的Java 8(JDK 1.8)来测试lambdas ……但我认为接受“静态导入”很奇怪。
感谢所有的答案。 我要向孙报告这件事。 🙂
为了访问类的静态成员,您必须使用包含它的完整类名。例如,要访问Math类中的PI值,如果导入它,则必须使用java.lang.Math.PI.But( import static java.lang.Math.PI),您只需在代码中使用PI即可访问它