Dog*_*Dog 7 java import static namespaces compilation
我有一个A带有静态内部类的类,名为B:
import static A.B.*;
class A {
static class B {
static int x;
static int y;
}
public static void main(String[] args) {
System.out.println(x);
}
}
Run Code Online (Sandbox Code Playgroud)
我想静态导入所有内容B,但它不会工作:
$ javac A.java
A.java:1: package A does not exist
import static A.B.*;
^
A.java:9: cannot find symbol
symbol : variable x
location: class A
System.out.println(x);
^
2 errors
Run Code Online (Sandbox Code Playgroud)
为什么?
Rei*_*eus 11
如果A在默认包中,这将不起作用.但是,您可以添加包声明:
package mypackage;
Run Code Online (Sandbox Code Playgroud)
并使用
import static mypackage.A.B.*;
Run Code Online (Sandbox Code Playgroud)
给出了来自JLS的静态导入语法:
SingleStaticImportDeclaration:导入静态TypeName.标识符;
其中TypeName必须是完全限定的.
在使用包成员中,static import语法包含包名:
import static mypackage.MyConstants.*;
Run Code Online (Sandbox Code Playgroud)
建议static非常谨慎地使用进口产品.