不能`导入静态`静态内部类?

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非常谨慎地使用进口产品.