问题
I have a class A with a static inner class inside it called 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);
}
}
I want to static import everything in B, but it wont work:
$ 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
Why?
回答1:
This won't work if A is in the default package. However, you could add a package declaration:
package mypackage;
and use
import static mypackage.A.B.*;
The static import syntax from from the JLS is given:
SingleStaticImportDeclaration: import static TypeName . Identifier ;
where TypeName is required to be full qualified.
In Using Package Members the static import syntax is given with package name included:
import static mypackage.MyConstants.*;
It is recommended to use static imports very sparingly.
回答2:
It should be
import <the-package-for-the-class-A>.A.B.*;
If A is in the default package, this will fail.
Last, it's not a good practice to import *. Just import only the things that you need, in this case - import static <the-package-for-the-class-A>.A.B.x; if you're gonna use only the x variable.
来源:https://stackoverflow.com/questions/16595847/cannot-import-static-static-inner-class