Cannot `import static` static inner class?

老子叫甜甜 提交于 2019-12-07 01:40:52

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!