8

我有一个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);
    }
}

我想静态导入所有内容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

为什么?

4

2 回答 2

16

A如果在默认包中,这将不起作用。但是,您可以添加一个包声明:

package mypackage;

并使用

import static mypackage.A.B.*;

来自JLS的静态导入语法如下:

SingleStaticImportDeclaration:导入静态类型名称。标识符;

其中TypeName必须是完全限定的。

Using Package Membersstatic import中给出了包含包名的语法:

import static mypackage.MyConstants.*;

建议static非常谨慎地使用导入。

于 2013-05-16T19:32:52.600 回答
1

它应该是

import <the-package-for-the-class-A>.A.B.*;

如果 A 在默认包中,这将失败。

最后, import 不是一个好习惯*。在这种情况下,只需导入您需要的东西 -import static <the-package-for-the-class-A>.A.B.x;如果您只使用x变量。

于 2013-05-16T19:32:40.263 回答